HTML におけるベースタグの使用に関する詳細な説明

HTML におけるベースタグの使用に関する詳細な説明

requireJS には、baseURL というプロパティがあります。baseURL を設定することで、現在のページではなく、プロジェクトを基準にして読み込むファイル パスを記述できます。

たとえば、プロジェクト ディレクトリが /myproject/ で、その中に 2 つのページがあり、1 つは /myproject/one.html、もう 1 つは /myproject/html/other.html で、両方のページが /myproject/js/some.js を読み込む必要があるとします。 baseURL を /myproject/ に設定すると、js をロードするときに、ページ パスが異なるために異なる相対パスを使用するのではなく、両方のページでプロジェクトに対する相対パス ./js/some を使用できます。

しかし、requireJS を使用しない場合、baseURL と同様の機能を実現できるでしょうか?

ベースタグ
実際、HTML には同様の機能を生成できる基本タグがあります。例えば:

コードをコピー
コードは次のとおりです。

<html>
<ヘッド>
<base href="http://static.cnblogs.com/" />
</head>
<本文>
<img src="./images/logo_gray.gif" />
</本文>
</html>

相対パス ./images/logo_gray.gif を使用してロードした画像は、画像 http://static.cnblogs.com/images/logo_gray.gif になることがわかります。

ベース タグは、ページのリンクにデフォルトのパスまたはデフォルトの開く方法を追加できます。

デフォルトの開く方法を設定する例を次に示します。

コードをコピー
コードは次のとおりです。

<html>
<ヘッド>
<ベースターゲット="_blank" />
</head></p> <p><body>
<a href="http://www.cnblogs.com">このページは新しいウィンドウで開きます</a>
<a href="http://justany.cnblogs.com">このページも新しいウィンドウで開きます</a>
</本文>
</html>

バグ
ベース タグを動的に記述しないことをお勧めします。そうしないと、http://localhost/static/test.html のページのように、Firefox と IE で小さなバグが発生します。

コードをコピー
コードは次のとおりです。

<html>
<ヘッド>
<スクリプト>
document.write('<base href="http://localhost/" />');
</スクリプト>
</head></p> <p><body>
<img src="static/1.jpg" />
</本文>
</html>

Firefox と IE は、最初に http://localhost/static/static/1.jpg を読み込み、次に http://localhost/static/1.jpg を読み込みます。つまり、まず現在のページを基準としたパスで読み込みを試み、次にベース タグで設定されたデフォルトのパスで読み込みを試みます。

Chrome は正常に読み込まれます。

Firefox が正しく読み込まれません。

なぜ?

これについて、適切な説明が見つかりませんでした。私たちの分析では、ブラウザがリソースの読み込みを最適化しているため、動的に挿入されたベース タグが有効にならないときに、ブラウザがリソースを事前読み込みすることになります。その結果、エラーが発生し、その後、ベース タグが有効になり、正しいリソースが読み込まれます。

どうすれば回避できるでしょうか?ベースタグを動的に記述しなくても問題ありません。ベース タグを動的に記述する必要がある場合は、ページによって参照されるすべての外部リソースを JavaScript を通じて動的に読み込む必要があります。

<<:  Vuex環境の詳細な説明

>>:  Navicat 接続 MySQL エラーの説明分析

推薦する

Dockerコンテナを停止または強制終了できない問題の解決策

Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...

MySql はコミットする必要がありますか?

MySQL が挿入などの操作を実行するときにコミットする必要があるかどうかは、ストレージ エンジン...

VMware ESXi サーバー仮想化クラスター

目次まとめ環境とツールの準備サーバー仮想化のインストール VMware ESXi仮想マシンのオペレー...

カスタム Docker イメージを作成するための Dockerfile の詳細な説明と CMD と ENTRYPOINT 命令の比較

1. 概要Docker イメージを作成するには、次の 3 つの方法があります。 Docker コミッ...

Vue プロジェクトは、コードの暗号化と難読化を実装するために webpack-obfuscator を設定します。

背景会社のコードは第三者に提供され、利用されます。ソースコードが完全に漏洩しないようにするには、提供...

mysql 5.7.17 winx64.zip インストールと設定方法のグラフィックチュートリアル

はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...

シンプルな加算計算機の JavaScript 実装

この記事では、参考までに、加算計算機を実装するためのJavaScriptの具体的なコードを紹介します...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

Vue プロジェクトがページング効果を実現

ページング効果は、参考までにvueプロジェクトに実装されています。具体的な内容は次のとおりです。 1...

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

CSS3で実装された6つの境界遷移効果

6つの効果実装コードhtml <h1>CSS 境界遷移</h1> <セ...

HTMLベースの複数画像アップロードのプレビュー機能を実装

最近、Web ページに複数の画像をアップロードするためのスクリプトを作成しました。これは非常に実用的...

Vue3 の ref と toRef の違いを簡単に分析します

1. refがコピーされ、ビューが更新されますrefを使用してオブジェクトのプロパティ値をレスポンシ...

VMware Workstation 15 Pro インストール ガイド (初心者向け)

01. VMware Workstation Pro 15 のダウンロードダウンロード: VMwa...

MySQL 制約の超詳細な説明

目次MySQL 制約操作1. 非ヌル制約2. ユニーク制約3. 主キー制約4. 外部キー制約5. カ...