英語: リンクタグはIEでhrefを自動的に補完します

英語: リンクタグはIEでhrefを自動的に補完します IE linkobj.href; x IE linkobj.getAttribute('href'); x IE linkobj.getAttribute('href',2); x Gecko linkobj.href; x Gecko linkobj.getAttribute('href'); x Gecko linkobj.getAttribute('href',2);x Opera linkobj.href; x Opera linkobj.getAttribute('href'); x Opera linkobj.getAttribute('href',2); x属性の取得テスト ページIE6、Firefox 1.5、Opera 8.51 でテストします。
では、getAttribute メソッドによって何が返されるのでしょうか。getAttributeメソッドの構造を規定する W3C DOM レベル 2 コア仕様では、この問題は取り上げられていません。どちらのアプローチが間違っているとか正しいということではありません。この点では、仕様は解釈の余地があります。
コーダーとしては、両方の値にアクセスできるようにしたいと考えています。この問題に対処するには、DOM コア仕様を更新する必要があります。
以下のコメントで Jim と非常に有意義なやり取りをした後、私の考えは正されました。仕様では、getAttribute は絶対 URL ではなく属性値を返す必要があるとされています。Microsoft のアプローチは間違っています。
当面は、古いオブジェクトプロパティメソッドlinkobj.hrefを使用して、派生した絶対URLを返します。これは、すべてのブラウザで最も一貫した結果を提供します。関心のあるURL
W3C REC DOM レベル 2 getAttribute のコア仕様
getAttribute の Gecko ドキュメント
getAttribute に関する Microsoft ドキュメント
いつものように、この投稿を終えようとしていたときに、同じ主題について説明している QuickMode サイトでこのバグ レポートを見つけました。
getAttribute HREF は常に absolute.html です。

英語: IE では、リンク タグによって href が自動的に補完されます。
Ajax Link Tracker と MapSurface に取り組んでいるときに、DOM スクリプトを使用して href 属性を取得する方法に矛盾があることに気付きました。
href属性は他の要素属性とは異なり、ページURLのコンテキストに応じて値を設定できます。相対的なhref属性でリンクを設定すると、
<a href="../development/test1.html">テストページ</a>
ブラウザはページの現在の URL を確認し、リンクの絶対 URL を導出します。
http://www.glenn.jones.net/development/test1.html
これが問題の根本です。ブラウザによっては属性のテキストを返すものもあれば、派生した絶対 URL を返すものもあります。また、href 属性を取得する方法によっても結果は異なります。属性にアクセスする一般的な方法は 3 つあります。
linkobj.href; linkobj['href']; linkobj.getAttribute('href');
属性にアクセスするためのlinkobj.hrefおよびlinkobj['href'];メソッドは、一貫して派生した絶対 URL を返します。
Microsoft は、getAttribute メソッドに 2 番目のパラメータを追加することで、この問題に対処しようとしました。2 番目のパラメータは、0、1、または 2 に設定できます。パラメータが 2 に設定されている場合、メソッドは属性テキストを返します。その他の設定では、派生した絶対 URL が返されます。
linkobj.getAttribute('href'); linkobj.getAttribute('href',2);
派生
絶対URL
属性テキスト

<<:  MySQL DATE_FORMAT関数の使用

>>:  vagrant+virtualBoxで仮想マシンを構築する方法

推薦する

Linuxファイアウォールiptablesの詳細な紹介、設定方法と事例

1.1 iptablesファイアウォールの概要Netfilter/Iptables (以下、Ipta...

仮想マシンの複製に関するVirtual Boxチュートリアル図

VMに慣れた後、BOXに切り替えるのは少し異なります。たとえば、コピーネットワークカードを2枚使って...

ページコンテンツ全体を中央に配置して、高さがコンテンツに合わせて自動的に拡張されるようにする方法

ページコンテンツ全体を中央に配置する方法と、コンテンツに合わせて高さを自動的に拡大縮小する方法。これ...

初心者がHTMLタグを学ぶ(2)

関連記事:初心者が学ぶ HTML タグ (1)初心者は、いくつかの HTML タグを理解することで ...

1つのSQL文でMySQLの重複排除が完了し、1つが保持されます。

数日前、ある要件に取り組んでいたとき、MySQL で重複レコードをクリーンアップする必要がありました...

TypeScript 環境を構築して VSCode にデプロイする詳細な手順

目次TypeScript環境の構築ステップ1: Taobaoミラーをダウンロードするステップ2: T...

js のプロトタイプ、プロトタイプ オブジェクト、プロトタイプ チェーンの包括的な分析

目次プロトタイプを理解するプロトタイプオブジェクトを理解するインスタンスプロパティとプロトタイププロ...

この記事はJavaScriptの変数とデータ型を理解するのに役立ちます

目次序文:親切なヒント:変数1. 免責事項2. 譲渡3. 2つの小さな文法上の詳細変数の命名規則なぜ...

特定のシンボルで複数の行と列に分割するMySQLの例

一部の障害コード テーブルでは、履歴またはパフォーマンス上の理由から、次の設計パターンが使用されます...

JavaScriptのポイントごとのシリーズでこれは何ですか

これを理解するおそらく、他のオブジェクト指向プログラミング言語でもthis見たことがあり、これがコン...

ネイティブ JavaScript でショッピングカートを実装する

この記事では、ショッピングカートを実装するためのJavaScriptの具体的なコードを参考までに紹介...

Quill エディタでカスタム HTML レコードを挿入する詳細な例

もう2020年です。飢えた人間は単純なテキストでは満足できなくなり、さまざまなスタイルの派手なテキス...

IISとAPACHEはHTTPSへのHTTPリダイレクトを実装しています

7 のMicrosoft の公式 Web サイトから HTTP Rewrite モジュールをダウンロ...

MySQL マルチテーブル結合入門チュートリアル

接続は、実際の外部キー(人工的に作成された 2 つのテーブル間の対応関係を指します。対照的に、FOR...

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...