【问题标题】:Changing window.location.href in Firefox in response to an onunload event更改 Firefox 中的 window.location.href 以响应 onunload 事件
【发布时间】:2011-01-22 09:24:55
【问题描述】:

我在使用 window.location.href 时遇到了一个奇怪的 JavaScript 问题,这显然只影响 Firefox(我使用的是 3.6)。

通常window.location.href 不会是只读的,这在 Firefox 中完美运行:

window.location.href = "http://google.com/";

但是,当我调用一个函数来响应 onunload event (<body onunload="testThis();">) 时,这不会按预期工作:

function testThis() {
    alert ("1: " + window.location.href);
    window.location.href = "http://google.com/";
    alert ("2: " + window.location.href);
    return false;
}

在这两种情况下,警报都会在 Firefox 中显示页面的当前位置,而无需进行更改。没有 JavaScript 错误,onunload event 成功调用了函数,所以问题似乎是编辑或替换window.location.href 的值。

我尝试过使用window.locationdocument.location.href,甚至尝试更改window.location.search。是否有可能某个事件(特别是 onunload 事件)导致 window.location.href 变为只读?

【问题讨论】:

    标签: javascript firefox dom-events window.location


    【解决方案1】:

    是,防止恶意网页阻止用户离开。

    【讨论】:

    • 我非常感谢 :-)
    • onbeforeunload也是这样吗?
    • 我想是的。我还认为您可以返回一个字符串,然后将其显示在确认对话框中(让用户确认导航离开或取消/停留)。
    • 阻止用户使用后退按钮的原因有很多,比如阻止用户重新提交表单(草率的编程),或者像拥有一点知识的客户坚持认为他们的 Intranet 用户不能一旦他们开始测试或调查,就返回上一页。我会让你的集体想象哪一个适用于此......是否有任何可用的文档说明哪些事件会阻止窗口属性被编辑?哪些浏览器会受到影响?
    • developer.mozilla.org/en/DOM/window.onbeforeunload ``没有公共规范。 onbeforeunload 由 Microsoft IE 4 引入,随后被其他浏览器复制。 ´´
    【解决方案2】:

    为了记录,firefox 似乎使用 document.location 代替 document.location.href。

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多