web-dev-qa-db-ja.com

ローカルファイルの場合に<a href="">を設定する正しい方法

ローカルファイルにリンクしようとしています。 hrefを次のように設定しました。

<a href="file://C:/path/to/file/file.html">Link Anchor</a>
  • Firefoxで、「新しいタブでリンクを開く」を右クリックしても何も起こりません。

  • 右クリックして「リンクの場所をコピー」し、新しいタブを手動で開いてコピーしたリンクを貼り付けると、正常に機能します。したがって、file://構文は問題ないようです。また、file:///のような3つのスラッシュを使用して試しましたが、同じ結果になります。

何が間違っていますか?

18
sameold

ファイルを階層ディレクトリに整理し、相対パスを使用します。

デモ:

HTML(index.html)

<a href='inner/file.html'>link</a>

ディレクトリ構造:

base/
base/index.html
base/inner/file.html
....
9
Petar Sabev

定義により、file:URLはシステムに依存し、ほとんど使用されません。例のようなURLは、ローカルで使用すると機能します。つまり、リンクページ自体はユーザーのコンピューターにあります。しかし、ブラウザは通常、HTTPプロトコルで取得したページ上のfile:リンクをたどることを拒否しているため、ページ自体のURLはhttp:URLです。このようなリンクをクリックしても、何も起こりません。目的はおそらくセキュリティです。リモートページが訪問者のコンピューター内のファイルにアクセスするのを防ぐためです。 (この機能は最初にMozillaに実装され、その後他のブラウザにコピーされたと思います。)

そのため、コンピューターでHTMLドキュメントを操作する場合、file:URLは機能するはずですが、構文にはシステム依存の問題があります(そのようなURLでのパス名とファイル名の書き方)。

コンピューター上のHTMLドキュメントとWebサーバー上の別のHTMLドキュメントで本当に作業する必要がある場合、リンクを機能させる方法は、ローカルファイルをプライマリとして使用し、必要に応じてクライアント側のスクリプトを使用してドキュメントを取得することですサーバーから

9

ベースタグ内のhref値は、すべての相対パスの参照ポイントとなり、それ以外の場合は現在のディレクトリパス値をオーバーライドします-'〜'はサイトのルートです

    <head>
        <base href="~/" />
    </head>
3
Jenna Leaf

これは、IISを実行しているときにhtmlページを実行し、次にLocal file systemはアクセスできません。

リンクをローカルで機能させるには、Visual Studioではなく、ファイルブラウザから呼び出し元のhtmlページを直接実行しますF5またはIISをクリックしてファイルシステムから開き、次のようなリンクを使用していることを確認します。

<a href="file:///F:/VS_2015_WorkSpace/Projects/xyz/Intro.html">Intro</a>
1
Ashraf Abusada

../htmlfilename with .html User can do thisこれにより、ローカルファイルの任意のページへのリダイレクトの問題が解決されます。

0
Priyanka Davle