1

ajax を使用してページをロードするために、スクリプト ファイルに次のように記述します。

$(".ajaxed").live("click", function(event) {
    var post_slug = $(this)[0].pathname.substring(1);
    alert(post_slug);
    $.address.crawlable(true).value(post_slug);
    $("#board").load("ajax/",{slug:post_slug});
    return false;
});

ユーザーがhttp://www.website.com/link1にリンクしているアンカーをクリックすると、post_slug アラートは link1 になります。しかし、これを IE8 で使用すると、post_slug アラートは link1 ではなくink1 になります。私は何を間違っていますか?

.substring(1) だと思いますが、どうすればよいですか?

4

4 に答える 4

4

これを使用できます:

$(this)[0].pathname.replace("/", "");

IE7、Chrome でテスト済み: http://jsfiddle.net/mrchief/vB2Fu/3/

正規表現を使用して開始スラッシュのみを置き換えることにより、置換を少し慎重にすることができます

$(this)[0].pathname.replace(/^\//, "");

アップデート:

ネストされたスラッグについては、少し変更しました。

$(this)[0].pathname.substring($(this)[0].pathname.lastIndexOf("/")).replace(/^\//, "");

デモ (IE7、Chrome でテスト済み): http://jsfiddle.net/mrchief/vB2Fu/5/

于 2011-08-25T20:25:49.667 に答える
0

substring(1) は、2 番目の文字から開始することを意味します。部分文字列 (から、へ)。したがって、IE は最初の「/」を返しません。

于 2011-08-25T20:25:03.947 に答える
0

pathnameあなたの問題は、IEが(先頭の なしで)に対して異なる値を返すこと/です。

それをテストしてそれに応じて使用/省略しsubstringたり、URL全体を取得して使用したりできますsplit

于 2011-08-25T20:25:27.653 に答える
0

それをテストできます

if ($(this)[0].pathname.substring(0, 1) === "/") {
    post_slug = $(this)[0].pathname.substring(1);
} else {
    post_slug = $(this)[0].pathname; // ie8 oddness
}
于 2011-08-25T20:29:51.887 に答える