这是我使用jQuery Address的第二个项目,我认为Firefox有些奇怪,或者至少我可以发现它在Firefox和Webkit中有不同的行为。
当深度链接时,jQuery Address应该触发一个change事件并执行与该状态相关的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);
});
但这是我第二次这样做,感觉不对..我错过了什么吗?
我也已经试图搞砸内部和外部变化回调,没有机会......
感谢您的帮助,
托马斯。
答案 0 :(得分:0)
我使用Asual jQuery Adress插件1.6,你可以在这里找到:enter link description here而不是在Asual网站上。
在此版本中,他们已删除可抓取功能(但可以通过Google规范抓取)。另外,您可以使用http://refresh-sf.com/yui/
对其进行压缩所以这可能是1.5版本的错误