2012-05-29 119 views
9

我想在我的window.open函数完全加载后调用函数。window.open后Javascript调用函数

但是,使用onload函数过早被调用。被击中的URL打开一个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); 
+0

为什么不在子窗口中这样做?如果你不介意共享打开excel文件的代码,这将是很好的 - 因为excel文件加载是你想要的真正触发器。 –

+0

你只是想确保excel文件打开或你需要它确切地知道它何时打开? – zaw

+0

我有一个extjs网格坐在这后面,需要知道什么时候excel文件打开/窗口已完全加载文档。这是一个被称为打开excel文件的CGI脚本。 – pm13

回答

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进行检测。

+0

我不确定Cors标头允许绕过窗口原点。 – user2284570