【问题标题】:window hashchange event on internet explorer is not triggeredInternet Explorer 上的窗口 hashchange 事件未触发
【发布时间】:2018-06-11 13:37:18
【问题描述】:

我在 javascript 上有一个简单的函数,如果窗口位置基于 url 主题标签,那么在文档准备好后我正常执行我的函数,我还添加了一个 hashchange 事件,我调用了相同的函数。

除了在 Internet Explorer 上之外,一切都按预期工作,如果用户在地址栏上按下回车键而不更改哈希(如果他更改了哈希值),那么函数不会执行,知道如何捕捉用户按下的事件在相同的 URL 上输入相同的标签?

【问题讨论】:

  • "不改变哈希值" 那么hash**change** 事件不应该触发,不是吗?
  • 在这种情况下 IE 会重新加载当前页面,还是只是“什么都没发生”?
  • 它似乎刷新了页面,因为我的修复功能没有执行,并且执行了带有标签默认行为的浏览器的回退

标签: javascript internet-explorer hashchange


【解决方案1】:

当用户在 URL 栏中按 Enter 键时,它会加载页面,即使地址没有更改。因此,在您的情况下,它只会刷新页面。

要捕获此事件,您可以使用 onbeforeunload javascript 事件。此事件使您能够确定导航类型。使用event.currentTarget.performance.navigation.type 确定导航类型。这适用于 IE、FF 和 Chrome。

function CallbackFunction(event) {
    if (event.currentTarget.performance.navigation.type == 1) {
        console.log("refreshing page");
    }
}

document.onbeforeunload = CallbackFunction;

希望对你有所帮助!!

【讨论】:

  • 感谢您的信息,事件执行不是我的问题的解决方案,因为它不是在页面加载之后而是之前触发
  • 实际上现在我正在测试 ie 根本没有触发,```` window.onbeforeunload = function (event) { if (event.currentTarget.performance.navigation.type === 1 ) { // 刷新页面 alert('refresh'); } }; ````
猜你喜欢
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多