Javascript 正在将document.readyState的状态更改为";“完成”;通过PHP下载文件后';s标题(';内容处置:附件…';
我的问题是:通过PHP的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函数,我只想在页面加载完成时激活,所以我使用
头('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
保持为完整
…请在此处尝试