2012-12-11 91 views
16

基本上我想要做的是什么东西,这样做的效果:有没有办法在改变window.location.href之后进行onload回调?

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

有什么办法加载窗口的新位置时,有一个回调? (上面的代码不起作用。)

+1

更改'location.href'会导致当前页面关闭并打开一个新页面,因此在加载新页面时无法触发旧页面上的任何事件 – qwertymk

回答

15

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

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

+1

如果窗口是新窗口,该怎么办: var w = window.open(“”); w.location.href =“some_location”; w.onload = function(){alert(“Hi!”);}; 假设我需要使用重定向的实际原因,而不是直接打开URL,就像我需要重定向请求的响应或其他东西。那么有什么办法吗? – Lukas

+2

@Lukas - 如果您打开一个新窗口(与框架相同),如果窗口位于不同的域上,并且无法在该窗口中设置事件处理程序,则存在安全限制。如果你的窗口在同一个域上,你应该能够为它设置一个onload处理程序。 – jfriend00

+0

嗯...检查出http://jsfiddle.net/42hKC/ - 我在同一个域内打开一个新窗口,将一个onload附加到新窗口,并且它不会触发。 – Lukas

2

将window.location.href设置为一个新值可以让浏览器直接进入下一页。

像这样:

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

一旦浏览器进入到google.com,就是这样,你的Javascript不再执行,并没有办法让你有任何形式的回调,因为浏览器不再运行你的页面。

所以,答案是否定的。

+0

错了。我的Javascript仍在运行 - 在控制更新窗口的原始窗口中。 – 7vujy0f0hy

相关问题