有没有办法在更改window.location.href后进行onload回调?

Luk*_*kas 21 javascript onload window.location

基本上我想做的就是这样做的结果:

window.location.href = "some_location";
window.onload = function() {
  alert("I'm the new location and I'm loaded!");
};
Run Code Online (Sandbox Code Playgroud)

加载窗口的新位置时有没有办法进行回调?(上面的代码不起作用.)

jfr*_*d00 15

不,你不能按照你想要的方式去做.加载新页面将关闭当前文档并开始加载新文档.当新页面开始加载时,当前文档中的任何代码将不再处于活动状态.

要在加载新文档时拥有事件处理程序,您需要将代码插入到新页面的文档中,或者将新文档加载到iframe中并监视当前文档中iframe的加载.

  • 如果窗口是新窗口,该怎么办:var w = window.open(“”); w.location.href =“ some_location”; w.onload = function(){alert(“ Hi!”);}; 假设有一个实际的原因,我需要使用重定向而不是直接打开URL,就像我需要在请求或其他内容的响应上进行重定向一样。那有什么办法吗? (2认同)
  • @Lukas - 如果要打开一个新窗口(与框架相同),如果窗口位于不同的域上并且您无法在该窗口中设置事件处理程序,则存在安全限制.如果您的Windows位于同一个域中,则应该能够为其设置onload处理程序. (2认同)

mat*_*990 5

将 window.location.href 设置为新值会告诉浏览器直接转到下一页。

就像这样:

window.location.href = "http://www.google.com/";
Run Code Online (Sandbox Code Playgroud)

一旦浏览器访问 google.com,就这样,您的 Javascript 将不再执行,并且您无法进行任何类型的回调,因为浏览器不再运行您的页面。

所以,答案是否定的。

  • 错误的。我的 Javascript 仍在运行 - 在控制更新窗口的原始窗口中。 (2认同)