2010-08-30 44 views
1

基本上,我想等待IE保存对话框打开,然后运行下一行JavaScript。您如何知道何时从JavaScript开始下载?

喜欢的东西:

`window.open(URL,"_self",...);` 

window.alert("save dialog started");

可以这样做?由于

GRAE

我想出了这一点:

   var iframe = document.getElementById("dFrameID"); 
       if(iframe.readyState=='complete') 
       window.close(); 

其他 等待,并再次调用它。

似乎工作正常。

这只是IE解决方案。祝FF好运。

回答

0

我还没有测试过这个,但你可能能够使用setTimeout(...)去那里。我已经使用它(仅在IE中)等待打印预览对话框关闭。

诀窍是在这五个循环之间有足够的时间等待一个循环(例如五次)以保证保存对话框已经出现。一旦对话框出现,所有的JavaScript处理应该冻结。然后,当这个盒子关闭时,javascript会再次启动,并且你的setTimeout处理程序将会执行。

再一次,我不知道这是否会实际工作,它可能会根据您使用的浏览器而有所不同。由于您的下载窗口和警报窗口是分开的,因此也很复杂。

+0

...但有用户选择取消... – donohoe 2010-08-30 20:08:21

+0

@Michael的用例。然后希望他可以检测到页面已经关闭(因为取消)并做出适当的回应。 – 2010-08-30 20:10:16

+0

@John - 也许我误解了,但取消只会关闭对话窗口,而不是页面。 setTimeout仍然会触发警报,提示信息不正确。 – donohoe 2010-08-30 20:29:51

1

JavaScript和浏览器不会在这个级别上进行交互。

+0

告诉我有关它!大声笑 – 2010-08-30 21:05:58

0

在你指出“FF祝你好运”时,浏览器支持什么的区别是问题所在。

如果您正在寻找来自同一服务器上托管的Iframe的完整内容。你可以在iframe文件上有一个脚本与父类进行通信... IE parent.yourfunction(); ...如果域不相同,则在帧或Iframe之间不允许通信。

+0

它是在相同的域名,如果有帮助。 – 2011-08-04 13:26:44

+0

如果我做一些像父母一样的事情。你的iframe函数(),我怎么知道什么时候触发函数。我将不得不在iframe的文档中触发下载,然后以某种方式知道何时下载足够远以至于浏览器可以关闭。 – 2011-08-04 13:29:59

+0

如果您要下载的内容类型必须经过验证,并且不会在iframe页面的onload事件之前开始。然后你需要利用你能从主机上知道的东西。一个php需要用来下载 - 而下载活动时需要创建一个文件 - 从javascript中请求该文件会告诉你下载是活动的。 – Wayne 2011-08-15 18:35:21

相关问题