これは jQuery アドレスを使用する私の 2 番目のプロジェクトであり、Firefox に何か奇妙な点があると思います。少なくとも、Firefox と Webkit では動作が異なることがわかります。
ディープ リンクの場合、jQuery アドレスは変更イベントを発生させ、この状態に関連する JavaScript の一部を実行する必要があります。
/foo/bar ディープ リンクの場合、イベント オブジェクトをコンソールに書き留めると、Google Chrome で 2 つのイベントが発生します。
jQuery.イベント #1
path: "/"
pathNames: Array[0]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/"
jQuery.Event #2
path: "/foo/bar"
pathNames: Array[2]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/foo/bar"
しかし、Firefox では、現在の URI を考慮しないイベントが 1 つしか発生しません。
jQuery.イベント #1
path: "/"
pathNames: Array[0]
queryString: ""
timeStamp: 1335431580471
type: "change"
value: "/"
したがって、明らかに Firefox では、/foo/bar URI に対して開きたいライトボックスが開かれません :-(
jQueryアドレスのコードは次のとおりです。
$.address.crawlable(1).state('/').change(function(event) {
var page = event.path;
if (page == '/foo/bar'){
openLightbox($('#create-popup-template').html());
create_main();
}
});
今のところ、Firefox で 2 回目の変更イベントを強制する init 関数を追加するだけで、簡単な回避策を使用して Firefox で動作させています。
$.address.init(function(){
if ($.browser.mozilla)
$.address.value(window.location.pathname);
});
しかし、これをしなければならないのは2回目で、気分が良くありません..何か足りないのですか?
また、内部および外部の変更コールバックを台無しにしようとしましたが、チャンスはありません..
助けてくれてありがとう、
トーマス。