このようにハッシュを変更した場合: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またはその他のデバッグアプリを開き、リンクをテストします。