Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在将document.readyState的状态更改为";“完成”;通过PHP下载文件后';s标题(';内容处置:附件…';_Javascript_Php_Html_Internet Explorer_Readystate - Fatal编程技术网

Javascript 正在将document.readyState的状态更改为";“完成”;通过PHP下载文件后';s标题(';内容处置:附件…';

Javascript 正在将document.readyState的状态更改为";“完成”;通过PHP下载文件后';s标题(';内容处置:附件…';,javascript,php,html,internet-explorer,readystate,Javascript,Php,Html,Internet Explorer,Readystate,我的问题是:通过PHP的头('Content-Disposition:attachment…技术)下载文件后,发起下载的网页有一个文档。readyState值为interactive 我希望这是完成的,因为下载已经完成 我是否遗漏了什么,或者这是预期的行为 如果是后者,那么有没有办法将document.readyState重置回complete (这是在使用Internet Explorer,如果有区别的话…) 背景: 我有一些JavaScript函数,我只想在页面加载完成时激活,所以我使用

我的问题是:通过PHP的
头('Content-Disposition:attachment
…技术)下载文件后,发起下载的网页有一个
文档。readyState
值为
interactive

我希望这是
完成的
,因为下载已经完成

我是否遗漏了什么,或者这是预期的行为

如果是后者,那么有没有办法将
document.readyState
重置回
complete

(这是在使用Internet Explorer,如果有区别的话…)


背景:

我有一些JavaScript函数,我只想在页面加载完成时激活,所以我使用

if( document.readyState != "complete" ) return;
在他们开始实现这一目标时。这在页面加载时正常工作,如
文档。readyState
在逐步加载时是
交互式的
,只有在页面加载完成后才是
完整的

在本页后面,我将提供一个链接,该链接将用户发送到下面的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
首先
加载
,然后
交互
,但状态保持不变,永远不会移动到
完成
,从而禁用早期的JavaScript函数


我不知道为什么会这样,并希望得到任何方向的帮助。

当您的页面第一次有
readyState
complete
时,您知道它已完全加载,您的脚本可以运行。当用户单击一个不会离开页面的链接时(例如只执行文件下载的页面)您可以忽略生成的
readyState
。因此,不必在所有脚本中检查
readyState
,您可以检查页面是否已在
完成的
readyState


readyState
设置为
interactive
的基本原理可能是,从技术上讲,不同的页面已加载,但从未呈现,并且没有进入历史记录。但我只是猜测。正如您在中看到的,该行为似乎不一致。

您的页面第一次具有
readyState
的ode>complete
,您知道它已完全加载,您的脚本可以运行。当用户单击不离开页面的链接时(例如仅执行文件下载的页面)您可以忽略生成的readyState。因此,您不必在所有脚本中检查
readyState
,而可以检查页面是否已在
完成的
readyState
中。(将
readyState
设置为
interactive
的基本原理可能是,从技术上讲,不同的页面已经加载,但从未呈现,并且没有进入历史记录。)@bzlm:一旦页面完成加载,我就求助于将全局标志设置为
true
(从
窗口调用。onload
,我认为这相当于检查页面是否已达到
完成状态,并使用该标志来确定其他脚本的可用性。这似乎起到了作用--感谢您的帮助,如果您愿意,请回答这个问题,以便我可以接受it@bzlm:但至于
readyState
保持
交互式的基本原理,我仍然不确定…测试其他类似的“加载”链接没有实际移动的不同页面将
readyState
保持为
完整
…请在此处尝试