Fire document.ready在后退按钮IE11上

时间:2014-06-03 19:12:27

标签: javascript jquery internet-explorer-11

我有一个带搜索表单的页面。当您第一次访问该页面时,我有一个jQuery(文档).ready()触发:

jQuery(document).ready(
  function () {
    jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
  }
);

现在,当您提交表单然后点击后退按钮时,document.ready不会触发,而且需要。

原始问题仅出现在Firefox中,但经过一些研究后我发现向身体添加卸载事件解决了:

jQuery(window).unload(function(){});

现在,我被告知它在IE11中不起作用。

任何人都有任何关于在IE11中启动document.ready函数的提示吗?

2 个答案:

答案 0 :(得分:3)

所以,我在我的搜索中偶然发现this answer,埋在帖子的底部。

我试了一下它的确有效:

// break the bfcache (ie11 and all others likely)
jQuery(window).focus(
  function() {
    jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
  }
);

我保留了原始代码的完整性,因为在我的情况下,我只是设置一个unix时间戳,如果它多次发生就没问题。

完整答案:

jQuery(document).ready(
  function () {
    jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
  }
);

jQuery(window).unload(function(){});

jQuery(window).focus(
  function() {
    jQuery("#new_search").val(Math.round(new Date().getTime() / 1000));
  }
);

答案 1 :(得分:1)

对于遇到此问题的其他任何人,这里有一篇MSDN文章,记录了如何阻止IE11的向后/向前缓存行为:jQuery sort elements using data id。据此,添加一个beforeunload事件处理程序会停止它。这也适用于Firefox:https://msdn.microsoft.com/library/dn265017(v=vs.85).aspx