6

このようにハッシュを変更した場合:window.location.hash = "main/0/sub/1/na/false";。ブラウザのアドレスがに変わりますhttp://mysite.com/#main/0/sub/1/na/false。ページのonhashchange関数が起動し、すべてが想定どおりに機能します。

ただし、Firebugでは、次の宛先にもリクエストを送信していることがわかりhttp://mysite.com/main/0/sub/1/na/falseます。...ハッシュなしのURL。これにより、コンソールで404がサイレントになります。

デバッグすると、その時点で発生することがわかりますwindow.location.hash

ただし、このようにハッシュを変更すると、window.location.hash = "main=0&sub=1&na=false";追加のリクエストは送信されません。

最初の例で追加のリクエストが送信されるのはなぜですか?

更新: リクエストが前後に送信されることに気付きましたwindow.location.hash(中?)$(window).bind('hashchange')。私が持っている場合の例...

window.location.hash = 'main/0/sub/1/na/false'; // Breakpoint 1 in Firebug

$(window).bind('hashchange', function(e) {
    e.preventDefault();   // Breakpoint 2 in Firebug
    e.stopPropagation();
});

ブレークポイント1で停止すると、要求は送信されません。ブレークポイント2で停止すると、要求はすでに送信されています。

Apache Tomcatでも、リクエストが送信されていることがわかります。

jQueryとjQueryMobileが接続されていることを追加します。

更新2: jQueryMobileを削除すると問題が解決します。しかし、私はそれが必要です:/

更新3

興味のある方:jQuery Mobileの場合:http://jsfiddle.net/pioSko/hz5PU/3/

jQuery Mobileなし:http://jsfiddle.net/pioSko/hz5PU/4/

Firebugまたはその他のデバッグアプリを開き、リンクをテストします。

4

2 に答える 2

3

History.jsを使用すると、同様の問題が発生しました。ページをリロードせずに URL をきれいに (ハッシュ化しない) ように設計されているため、これはそのスクリプトの意図した動作だと思います。

于 2012-12-22T09:05:13.947 に答える
-4

ここで推測を賭けます。ハッシュの後にスラッシュを使用することは無効なURLであり、Firefoxはおそらくハッシュを削除して有効なURLにすることでそれを補おうとしていると確信しています。

于 2012-06-27T11:52:52.233 に答える