首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文件下载对话框什么时候打开?- HTML,Javascript

文件下载对话框什么时候打开?- HTML,Javascript
EN

Stack Overflow用户
提问于 2010-04-02 11:25:23
回答 2查看 2.5K关注 0票数 2

我有一个html页面,当我单击页面上的文件链接时,文件下载对话框会弹出,这个文件对话框会锁定页面。我的意思是,如果不选择其中的一个选项(打开、保存、取消),我就不能在页面上做任何事情(这是正常的)。我需要的是如果javascript可以检查页面是否被锁定。(或者文件对话框是否弹出?)

附注:不要说“将一个onclick事件放到链接中”,因为服务器的响应可能非常慢(比如单击30秒后)。

EN

回答 2

Stack Overflow用户

发布于 2010-04-02 13:10:26

如果您知道您的服务器正在返回一个供下载的文件,那么您可以猜到该对话框是什么时候出现的(这是我从堆栈溢出问题中得到的一个相关问题的答案):

当您从页面发出HTTP请求时,添加一个参数,其值为一些随机字符串(如collisions)

  • The --它不必是安全的,但您希望避免服务器查找该参数。当它开始发送附件供下载时,它会添加一个带有随机字符串的cookie作为它的值。
  1. 现在,在页面发出HTTP请求之后,它启动一个间隔计时器。计时器函数中的代码检查document.cookie,以查找该随机字符串。一旦document.cookie包含该字符串,您就知道HTTP已将其发送到浏览器。由于您知道浏览器将要求用户保存附件,因此可以推断文件对话框在此时显示。

我所需要的是一种处理IE安全问题的方法,即文件附件来自直接用户“点击”以外的事件。我需要关闭一个模态对话框,所以我需要知道HTTP响应何时会返回。

票数 3
EN

Stack Overflow用户

发布于 2010-04-02 11:49:15

因为页面是锁定的,所以您不能使用JavaScript做任何事情,因为它也是锁定的。

但是,你想做什么?您是否试图以某种方式记录用户正在下载该文件的事实?如果是的话,有更好的方法来做,而且它们都在服务器端。使用一些服务器端脚本语言为文件提供服务,并记录下载的事实。

如果这不是您想要做的,那么唯一的方法是在链接上使用onclickonunload/onbeforeunload,但是这些方法不太可靠,我相信您会在不同的浏览器上发现完全不同的行为。

实际上,现在我想到了,还有一种方法,但它是非常脏的。这样做的目的是设置一个间隔,以便每秒钟运行一次,并检查两次运行之间是否超过了一秒钟。类似于:

代码语言:javascript
运行
复制
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是一个例子)在打开对话框时不会阻塞页面,所以这可能行不通。如果你用这个的话,一定要仔细检查每件事。

我现在得去洗个澡了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2566360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档