12

这是我使用 jQuery Address 的第二个项目,我认为 Firefox 有一些奇怪的地方,或者至少我可以弄清楚它在 Firefox 和 Webkit 中有不同的行为。

深度链接时,jQuery Address 应该触发一个更改事件并执行与此状态相关的一段 JavaScript。

对于 /foo/bar 深层链接,如果我将事件对象写到控制台,在 Google Chrome 中,我会触发两个事件:

jQuery.Event #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:

jQuery.Event #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 中工作,只需添加一个 init 函数来强制在 Firefox 中进行第二个更改事件:

$.address.init(function(){
    if ($.browser.mozilla)
         $.address.value(window.location.pathname);
 });

但这是我第二次必须这样做,感觉不对……我错过了什么吗?

我也已经尝试搞乱内部和外部更改回调,没有机会..

感谢您的帮助,

托马斯。

4

1 回答 1

0

我使用 Asual jQuery Adress 插件 1.6,你可以在这里找到:在此处输入链接描述,而不是在 Asual 网站上。

在这个版本中,他们删除了可抓取的功能(但它可以被谷歌正常抓取)。另外,您可以使用http://refresh-sf.com/yui/对其进行压缩

所以这可能是1.5版本的错误

于 2014-01-18T16:44:33.460 回答