英語: リンクタグは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で仮想マシンを構築する方法

推薦する

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

VMwareを使用したPermeateレンジシステムのインストール手順の詳細説明

1. 背景私たちは時々社内研修を行っており、実験環境をよく利用しています。最初はdockerコンテナ...

CSS3 で Taobao に空白スペースを実装する方法

Taobao用の空白スペースを作成します。 ブラウザページを縮小すると、コンテンツ領域は縮小されませ...

MySQLからClickHouseに移行する5つの方法

データ移行は、MySQL から ClickHouse にインポートする必要があります。概要プランは以...

Dockerを使用してNextCloudネットワークディスクを展開する方法

NextCloud コンピュータ上の任意のファイルやフォルダを共有し、NextCloud サーバーと...

MySQLがウィンドウ関数で合計関数を実行するときに発生する可能性のあるバグ

MySql のウィンドウ関数を使用して統計データを収集する際に、小さな問題が見つかったので、それにつ...

DHTML オブジェクト (さまざまな HTML オブジェクトの共通プロパティ)

!DOCTYPE HTML ドキュメントが準拠するドキュメント型定義 (DTD) を指定します。 ...

HTML テーブル マークアップ チュートリアル (18): テーブル ヘッダー

<br />ヘッダーはテーブルの最初の行を参照します。ヘッダー内のテキストは中央揃えで太...

Vue カードスタイルのクリックして切り替える画像コンポーネントの使用方法の詳細な説明

この記事では、vueカードスタイルのクリックして切り替える画像コンポーネントを参考までに紹介します。...

Vue Element フロントエンドアプリケーション開発 従来の Element インターフェースコンポーネント

目次1. リストインターフェースとその他のモジュールの表示処理2. 従来のインターフェースコンポーネ...

Python Flask WeChat アプレットのログインプロセスとログイン API 実装コード

1. まずは効果を見てみましょうインターフェース要求によって返されるデータ: 2. 公式ログインフロ...

js に基づいて大きなファイルのアップロードとブレークポイントの再開を管理する方法

目次序文フロントエンド構造バックエンド構造(ノード+エクスプレス) FormDataに基づくファイル...

HTML テーブルタグチュートリアル (3): 幅と高さの属性 WIDTH、HEIGHT

デフォルトでは、テーブルの幅と高さはコンテンツに応じて自動的に調整されます。テーブルの幅と高さを手動...