![](/img/trans.png)
[英]document.readyState == “complete” is always false. The state is always “interactive”
[英]changing state of document.readyState to “complete” after downloading file via PHP's header('Content-Disposition: attachment…'
我的問題是這樣的:通過PHP的header('Content-Disposition: attachment
...”技術)下載document.readyState
,發起下載的網頁具有document.readyState
值interactive
。
我希望這可以complete
,因為下載完成了。
我是否缺少某些東西,或者這是預期的行為?
如果是后者,那么有什么辦法可以將document.readyState
重設回complete
?
(如果使用Internet Explorer,會有所不同...)
背景:
我有一些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 );
現在,按此鏈接將導致首先loading
document.readyState
然后interactive
,但是狀態停留在那里,永不移動到complete
,因此禁用了較早的JavaScript函數...
我不知道為什么會這樣,並希望從任何方向得到幫助。
您的頁面第一次具有readyState
的complete
,就知道頁面已complete
加載,並且腳本可以運行。 當用戶單擊一個不會離開頁面的鏈接(例如僅執行文件下載的頁面)時,您可以忽略生成的readyState
。 因此,而不是檢查readyState
在所有的腳本,你可以檢查網頁是否曾經一直在complete
readyState
。
將readyState
設置為interactive
背后原因可能是,從技術上講,已加載了一個不同的頁面,但從未呈現過,也未進入歷史記錄。 但是我只是在猜測。 正如您在小提琴中看到的那樣,該行為似乎不一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.