1

当您离开页面并单击返回或刷新页面时,我遇到的问题是 externalChange 未在 IE 中触发。

有问题的网页之一是http://www.travelwisconsin.com/events。这肯定在 IE9 中发生,但我也能够使用 BrowserStack 在 IE10 中重现它

重现步骤:

  1. 访问http://www.travelwisconsin.com/events
  2. 转到页面底部的目录
  3. 翻阅目录几次(网址将使用散列 url 更新)。
  4. 单击查看其中一个事件的详细信息
  5. 点击浏览器返回按钮
  6. 页面不会调用 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;
            }
        });
4

0 回答 0