簡體   English   中英

通過PHP的標題下載文件后,將document.readyState的狀態更改為“完成”(“ Content-Disposition:附件…”

[英]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.readyStateinteractive

我希望這可以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函數...


我不知道為什么會這樣,並希望從任何方向得到幫助。

您的頁面一次具有readyStatecomplete ,就知道頁面已complete加載,並且腳本可以運行。 當用戶單擊一個不會離開頁面的鏈接(例如僅執行文件下載的頁面)時,您可以忽略生成的readyState 因此,而不是檢查readyState在所有的腳本,你可以檢查網頁是否曾經一直在complete readyState

readyState設置為interactive背后原因可能是,從技術上講,已加載了一個不同的頁面,但從未呈現過,也未進入歷史記錄。 但是我只是在猜測。 正如您在小提琴中看到的那樣,該行為似乎不一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM