Это мой второй проект с использованием jQuery Address, и я думаю, что есть что-то странное в Firefox, или, по крайней мере, я могу понять, что он имеет другое поведение в Firefox и Webkit.
При глубокой привязке адрес jQuery должен запустить событие изменения и выполнить часть 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 лайтбокс, который я хочу открыть для URI/foo/bar, никогда не открывается: - (
Вот мой код для адреса 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);
});
Но это был второй раз, когда я должен был это сделать, и это не кажется правильным. Я что-то упустил?
Я также уже пытался испортить внутренние и внешние изменения обратных вызовов, без каких-либо шансов.
Спасибо за помощь,
Томас.