当您离开页面并单击返回或刷新页面时,我遇到的问题是 externalChange 未在 IE 中触发。
有问题的网页之一是http://www.travelwisconsin.com/events。这肯定在 IE9 中发生,但我也能够使用 BrowserStack 在 IE10 中重现它
重现步骤:
- 访问http://www.travelwisconsin.com/events
- 转到页面底部的目录
- 翻阅目录几次(网址将使用散列 url 更新)。
- 单击查看其中一个事件的详细信息
- 点击浏览器返回按钮
- 页面不会调用 externalChange 来触发您上次访问的页面的 ajax 调用
下面是我用来设置这个过程的 javascript。当您执行上述第 6 步时,永远不会调用 externalChange 方法。你对可能发生的事情有什么建议吗?
var isInit = true;
$.address.strict(false);
$.address.externalChange(function(e)
{
var pageNumber = e.value == ""||e.value=="/"?1:e.value.split('/')[e.value.split('/').length - 1].split('?')[0];
var isArticleTab = !(e.value == ""||e.value=="/"||e.value.indexOf("Directory") >= 0);
if ((!isInit||e.value !="")&&e.value != "directoryAnchor")
{
if (e.value == ""||e.value=="/")
{
wdot.ContentPages.DirectoryListing.LoadEventsPage($(".directoryListContainer"), false, 1, true);
} else {
if (pageNumber != 1) {
wdot.ContentPages.DirectoryListing.LoadEventsPage(!isArticleTab ? $(".directoryListContainer") : $(".articleDirectoryListing"),false, pageNumber,null,$.address.queryString());
} else {
wdot.ContentPages.DirectoryListing.LoadEventsPage($(".directoryListContainer"),false, 1,null,$.address.queryString());
}
}
isInit = false;
} else {
isInit = false;
}
});