12

これは 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回目で、気分が良くありません..何か足りないのですか?

また、内部および外部の変更コールバックを台無しにしようとしましたが、チャンスはありません..

助けてくれてありがとう、

トーマス。

4

1 に答える 1

0

ここで見つけることができる Asual jQuery アドレス プラグイン 1.6 を使用します。Asual Web サイトではなく、ここにリンクの説明を入力してください。

このバージョンでは、クロール可能な機能が削除されています (ただし、Google は通常どおりクロールできます)。さらに、 http://refresh-sf.com/yui/で圧縮できます。

1.5バージョンのバグかも

于 2014-01-18T16:44:33.460 に答える