文件下载对话框何时打开?-HTML、Javascript
我有一个html页面,当我点击页面上的文件链接时,会弹出文件下载对话框,这个文件对话框会锁定页面。我的意思是,如果不选择其中一个选项(打开、保存、取消),我就无法在页面上执行任何操作(这是正常的)。我需要的是javascript是否可以检查页面是否被锁定。(或者是否弹出文件对话框?) p、 不要说“将onclick事件放在链接上”,因为服务器的响应可能非常慢(比如点击后30秒)因为页面被锁定了,你不能用JavaScript做任何事情,因为它也被锁定了 但是,你想做什么?您是否试图以某种方式记录用户正在下载文件的事实?如果是的话,有更好的方法来做,它们在服务器端。使用一些服务器端脚本语言为文件提供服务,并记录文件下载的事实 如果这不是您想要做的,那么唯一的方法就是在链接上使用文件下载对话框何时打开?-HTML、Javascript,javascript,html,savefiledialog,Javascript,Html,Savefiledialog,我有一个html页面,当我点击页面上的文件链接时,会弹出文件下载对话框,这个文件对话框会锁定页面。我的意思是,如果不选择其中一个选项(打开、保存、取消),我就无法在页面上执行任何操作(这是正常的)。我需要的是javascript是否可以检查页面是否被锁定。(或者是否弹出文件对话框?) p、 不要说“将onclick事件放在链接上”,因为服务器的响应可能非常慢(比如点击后30秒)因为页面被锁定了,你不能用JavaScript做任何事情,因为它也被锁定了 但是,你想做什么?您是否试图以某种方式记录用
onclick
,或者在卸载之前使用onunload
/onbeforeunload
,但是这些都不太可靠,我相信您会在不同的浏览器上发现完全不同的行为
事实上,现在我想起来了,还有一种方法,但它非常肮脏。其想法是设置一个间隔,每秒钟运行一次,并检查两次运行之间是否超过一秒钟。比如:
var lastTime = new Date().getTime();
function checkTime() {
var curTime = new Date().getTime();
if (curTime - lastTime > 1100) { // 1100 because there might be small browser lags
// do something after the dialog appeared and the user did something with it
}
lastTime = curTime;
}
setInterval(checkTime, 1000);
请注意,有些浏览器(我想Chrome就是一个例子)在打开对话框时不会阻止页面,所以这可能不起作用。如果你要用这个,一定要仔细核对每件事
我现在得去洗澡了。如果你知道你的服务器正在返回一个文件供下载,那么你可以猜到这一轮关于技巧的对话何时出现(这是我从stackoverflow获得的对我问的一个相关问题的回答):
“random”+new Date().getTime()
-它不必是安全的,但您希望避免冲突)document.cookie
以查找该随机字符串。只要document.cookie
包含该字符串,您就知道HTTP响应已发送到浏览器。由于您知道浏览器将要求用户保存附件,因此可以推断此时正在显示文件对话框我所需要的是一种处理IE安全问题的方法,即文件附件来自事件而不是直接用户“点击”。我需要关闭一个模式对话框,因此我需要知道HTTP响应何时返回。“不要说“将onclick事件放到链接上”,因为服务器可能响应非常慢(如单击后30秒),“服务器会如何处理它?”?当您选择文件时,这些都是客户端的。在您提交表单之前,服务器不会参与。实际上,我在单击链接时提交表单,表单的响应是文件,而不是html文档。您的目标浏览器是什么?我测试了IE、Firefox、Opera和Chrome。Chrome是唯一一个“锁定”页面的浏览器。在FF中,如果我右键单击链接并执行“将链接另存为”操作,则会出现一个模式对话框。为什么要检查文件下载对话框是否打开?换句话说,如果你有一个解决方案,你会用它做什么?不幸的是,这个解决方案在IE6中不起作用。这很聪明:)。我可能只是需要一些调整才能在IE6上工作(我不明白为什么它不会,除非IE6不阻止页面)。也许IE6不知道
.getTime()
或其他什么。它是否给出任何错误?事实上,IE6确实阻止了页面,但javascript仍在运行。这就是它不起作用的原因。值得一试,我会在尝试后告诉你结果。谢谢