通过PHP的标头(“内容处置:附件..”)下载文件后,将document.readyState的状态更改为“完成”
changing state of document.readyState to "complete" after downloading file via PHP's header('Content-Disposition: attachment...'
我的问题是:通过 PHP 的header('Content-Disposition: attachment
下载文件后......技术,发起下载的网页具有document.readyState
值 interactive
.
我希望这是complete
,因为下载已完成。
我错过了什么,还是这是预期的行为?
如果是后者,那么有没有办法将document.readyState
重置回complete
?
(这是使用IE浏览器,如果它有所作为的话...
背景:
我有一些JavaScript函数,我希望仅在页面完成加载时才激活,所以我使用
if( document.readyState != "complete" ) return;
在他们开始实现这一目标时。这适用于页面加载,因为document.readyState
在逐步加载时interactive
,并且仅在页面加载完成后complete
。
在本页的后面,我提供了一个链接,将用户发送到下面的PHP代码,以允许下载加载的数据:
header( 'Content-Type: text/csv; charset=Shift-JIS' );
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
$output = fopen( 'php://output', 'w' );
//write to file output...
fclose( $output );
现在,按下此链接会导致document.readyState
先loading
然后interactive
,但状态保持不变,永远不会移动到complete
,从而禁用早期的JavaScript函数...
我不知道为什么会这样,并希望在任何方向上提供任何帮助。
您的页面第一次具有complete
readyState
时,您知道它已完全加载并且您的脚本可以运行。当用户单击未离开页面的链接(例如仅执行文件下载的页面)时,您可以忽略生成的readyState
。因此,您可以检查页面是否曾经出现在complete
readyState
中,而不是检查所有脚本中的readyState
。
将readyState
设置为interactive
背后的理由可能是,从技术上讲,不同的页面已经加载,但从未呈现,也没有进入历史记录。但我只是猜测。正如您在小提琴中看到的那样,行为似乎不一致。
- 通过PHP的标头(“内容处置:附件..”)下载文件后,将document.readyState的状态更改为“完成”
- 通过document.location以javascript中的字符串形式传递文件路径
- 文件下载后,Document Ready无法工作
- 如何在createElement中加载带有document.write的javascript文件
- 转换 document.getElementById 以访问 TypeScript 中的文件
- 我想在js文件中包含$(document).keydown(function (e) {,但我无法使其工作
- 如何调用 Document.ready 内部的外部.js,方法是从 HTML 传入变量来调用下面的.js文件
- 不能将 document.execCommand('copy') 与输入类型文件一起使用
- 将JS分解为带有$(document).ready()的文件,但保留范围
- document.ready在外部JS文件中,用于检测加载哪个文件
- document.location 在尝试下载文件时修改 WebApi 路由
- 如何用jQuery替换document.getElementById('文件上传器')
- 使用不同的变量值多次执行外部javascript文件中的$(document).ready()中的代码
- document.write在appendChild添加的Javascript文件中无效
- document.ready,用于具有单个JavaScript文件的多个表单
- 创建一个只使用document.write()捆绑js和css文件的js文件有危险吗
- 如何使用.js文件使用document.write()显示网页
- 从jQuery$(document).ready(function(){});中的外部JavaScript文件获取变量值
- Javascript文件document.ready()的优先级
- document.getElementById不适用于Javascript'的外部文件