質問

というのは本当に本当なのでしょうか? attr("href") リンクのコマンドは、他のすべてのブラウザと比較して、IE7 では大きく処理されますか?

次のページがあるとします。 http://example.com/page.html そして私はこのHTMLを持っています:

<a href="#someAnchor" class="lnkTest">Link text</a>

そしてこのjQuery:

var strHref = $(".lnkTest").attr("href");

次に、IE7 では、 strHref 変数は次のようになります "http://example.com/page.htm#someAnchor" しかし、他のブラウザではこうなります "#someAnchor".

最後に挙げたケースが最も正しいと思うのですが、これは単に IE7 が悪いだけなのでしょうか、それとも jQuery のバグなのでしょうか?

役に立ちましたか?

解決

それは確かです。のないの代わりにjQueryのバグが、.getAttribute('href')のブラウザの矛盾の実装 - 。私は一貫性のためだけ.get(0).hrefを使用することをお勧めします。

あなたは絶対URIをしたくない場合は、.get(0).getAttribute('href', 2)を使用してIEとMozillaの属性テキストにアクセスすることができますように思えます。注しかし、この意志はないオペラでの作業と私はサファリ/ Chromeでテストしていない/何かます。

また.get(0).hrefのために「#」上のドメインまたは分割を取り除くと、それも「#」(チェック.length)が含まれていると仮定すると、アレイの第二の部分を使用することができます。

http://www.glennjones.net/Post/809/getAttributehrefbug.htm

他のヒント

私はそれがすべてのIE 7 +でそのように実装されています信じています。

私が使用します:

var href=jQuery('#foo').attr('href');
href=href.substring(href.indexOf('#'));

希望、それが役立ちます! 乾杯ます。

私は、この問題に関連するバグを見つけました: http://bugs.jquery.com/ticket/2747 のjQueryのは、IE7「バグ」の回避策を実施しました。しかし、jQueryの1.7.1でこのバグを再導入しました。 私は1.7.1用の新しいバグを作成しました: http://bugs.jquery.com/ticket/11129

私が使用します:

var hrefArr = $(this).attr('href').split('/');
var id = hrefArr[hrefArr.length-1];
私は最後の後にすべてのものを必要とする

「/".

別の方法は、href の代わりに data 属性を使用することです。

<a data-href="#anchor-0">example</a>

.

var href = $(this).attr('data-href');

私は、その後のhrefの()メソッドストリップそれを置き換えるJavaScriptを使用して、PHP経由で変数を作成しまいました

<script>var domain = 'http://<?=$_SERVER['HTTP_HOST']?>';</script>

<script>
$(function(){
/* prevent default action of all anchors with hash class */
$('#canvas').on('click', 'a.hash', function(event) {
    event.preventDefault();
            // get the href of the anchor
    var hash = '!' + $(this).attr('href');
            // remove the absolute url if it exists
    hash = hash.replace( domain, '' );
    // redirect
            window.location.hash = hash;
});
});
</script>

問題は、IE7とIE8は、テキストを変更することです。良い回避策は、この

のように行うことですので、
$('#linkId').attr('href','newlink').text('oldtext');
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top