重定向后的Javascript onload

时间:2014-06-08 21:48:06

标签: javascript

在我的Javascript代码中我正在加载一个页面,然后想要执行一些功能。我尝试使用像window.onload这样的解决方案,但是在我的html(只有JS的空白页面)加载之后,我需要在我正在加载的页面之后执行该功能。 我正在使用此代码:

this.document.location.href = myurl;

在这个加载之后,我想调用一些函数。有办法吗? 感谢

修改

我无法编辑目标页面源代码。

3 个答案:

答案 0 :(得分:3)

当您更改document.location.href的值时,您实际上是在进行重定向。

您可以在加载的页面内做任何您想做的事情,或者如果您没有跨域问题,请执行您想要动态加载的页面的xhr,查询正文,替换当前正文的内容,并替换头部内容,即样式,标题和脚本等。然后,您可以执行任何所需的脚本。

额外注意:这是一个非常棘手的事情,我之前已经做了几次 - 而且由于你实际上并没有真正获得一个完全解析的文档对象而证明它很成问题你可以这么简单地查询,你只收到一个巨大的字符串。我曾经想过使用的一个黑客实际上只是加载iframe中的所有内容,这样可以轻松查询实际记录的内容 - 额外阅读here

答案 1 :(得分:0)

将'window.onload = myFunction(){...}'放入页面中,这将被加载。

this.document.location.href 将打开页面,就像您在浏览器地址栏中键入它一样,旧页面中的onload-script将不会在新页面中执行。 顺便说一句,您可以将其快捷方式设置为 document.location = myUrl 请参阅Document-API at Mozilla

答案 2 :(得分:0)

window.load需要永远点火,因为它等待所有图片和资源加载到页面上。

听起来你最好的解决办法是轮询要完成加载的文件。这是一个简单的例子:

(function poll(){
    if(document.readyState === "complete"
    {
        // Your code here
    }
    else
        setTimeout(poll,500);
})();