ホームページ > ウェブフロントエンド > CSSチュートリアル > IE_Experience 交換における href のバグの問題

IE_Experience 交換における href のバグの問題

WBOY
リリース: 2016-05-16 12:04:03
オリジナル
1659 人が閲覧しました
コピーコード コードは次のとおりです。



(function() {
var test = document.getElementById('test');
alert(test.innerHTML);

var result = document.getElementById('result');
result.innerHTML = test. innerHTML;
alert(result.innerHTML)
})();


その結果、2 回目のポップアップが表示されますIE6 および IE7 ブラウザの場合 result.innerHTML の A 要素の href 値は絶対パスになります。
実際、私たちの祖先はずっと前にこれらの問題に遭遇していました(情報を提供してくれたUncle Yuに感謝します):
  • 《getAttribute(”HREF”) は常に絶対》
  • 《getAttribute href のバグ》
    解決策は上記の記事で述べられていますが、IE で getAttribute('href', 2) メソッドを使用することです。 Microsoft は、0、1、または 2 に設定できる 2 番目のパラメーターを使用してこのメ​​ソッドを拡張しました。2 に設定すると、プロパティの元の値が返されます。
    スクリプトは次のように修正されます。
    コードをコピー コードは次のとおりです。

    (function() {
    var test = document.getElementById('test');
    alert(test.innerHTML);
    var result = document.getElementById('result');
    結果.innerHTML = test. innerHTML;
    if(/*@cc_on!@*/0 ) { //if ie
    var links1 = test.getElementsByTagName('a');
    var links2 = result. getElementsByTagName('a' );
    for(var i = 0, len = links1.length; i links2[i].href = links1[i].getAttribute('href' , 2); }
    }
    alert(result.innerHTML);
    })();

    この問題を検索しているときに、次も検索しました。 Hedger Wang によって発見されたもの 興味深いバグ: IE で新しい href 属性値をリセットするときに、リンク テキストに「http://」または「@」が含まれている場合、その innerHTML が正しく表示されず、設定された href 属性として表示されます。
    解決策 (sHref は、設定される href の新しい値です):
    コードをコピー コードは次のとおりです。

    sHref = 'http://www.hedgerwow.com';
    var isMSIE = /*@cc_on!@*/false;
    if( isMSIE ){
    sHref = ' ' sHref; // 新しい href の前に余分なスペースを追加します
    };

    详细:《Internet Explorer がアンカーの innerHTML をリセットする可能性があります新しい「href」が割り当てられると間違ってしまう》

  • 関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート