在window.open之后的Javascript调用函数

时间:2012-05-29 10:24:02

标签: javascript load window

我正在尝试在window.open函数完全加载后调用函数。

但是,使用onload函数的过程很快就会被调用。正在点击的网址会打开一个Excel电子表格,下载时间可能为2秒到1分钟。

一旦调用了window.open函数,就会调用onload函数。但是,我需要知道何时打开了Excel文档 - 而不是在URL被点击时。

我已经尝试设置间隔但是没有被调用:

w = window.open(url,'_parent',false);   

w.onload = function(){
    console.log('here');
    setInterval(function(){
        alert('Hi');
    },10);

1 个答案:

答案 0 :(得分:4)

首先请注意,为了在不因跨域限制而被阻止的情况下(或者不必在服务器上参数化CORS标头),您必须:

  • 从同一个域和同一个端口提供您的主页面和弹出内容(您的Excel文件)
  • http://而非file://
  • 中打开您的主页

如果遵守这些条件,最好的解决方案是使用jquery,因为其load函数等待“直到所有资产(如图像)都被完全接收”:

<html>
    <head>
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
<body>
<script>
var popup = window.open('popup.html');
$(popup.document).load(function() {
    alert('loaded');
    // do other things
});
</script>
</body>
</html>

小心你的全局方案:当你认为他们“打开”文件时,每个浏览器/配置可能会做一些不同的事情。没有办法用简单的open检测是否他们决定解雇它,没有正确的插件,只需下载它。