![](/img/trans.png)
[英]How can I tell 'Whether a Javascript object exists on my page'?
[英]Can I tell from javascript whether my page was hard refreshed?
我已經放棄了這一點,但我想我會因為好奇而在這里發帖。
我稱之為“硬刷新”的是您在開發過程中執行的Ctrl + R或Shift + F5 ,以查看您的更改。
這會導致瀏覽器向請求添加Cache-Control: max-age=0
標頭, 並為圖像和腳本等添加“子”請求。
如果你正在做你的工作,除了改變的資源外,你將得到304
。 (好的,請參閱注釋。這是假設其他驗證器基於瀏覽器緩存發送。)
到現在為止還挺好。
問題是我不是直接從頁面加載腳本,而是通過load.js
加載腳本,並且瀏覽器在這些請求中是否包含該Cache-Control
標頭時不一致。 Chrome根本不會這樣做,Firefox似乎停在了系列的中間。
由於我無法訪問當前請求的標頭,因此無法知道是否應包含該標頭。
結果是,當我更改腳本(除了load.js
)之外,硬刷新不能可靠地工作,我必須,例如,清除瀏覽器緩存(這有點沉重)。
有什么想法嗎?
遺憾的是,您無法從JavaScript檢測到硬刷新(無法訪問當前加載頁面的標頭)。
但是,服務器可以從請求標頭中判斷這是否是硬刷新,因此可以選擇合作。 例如,服務器可以在響應中包含自定義<meta>
標記,或者向<body>
添加一個特殊類,然后您的腳本就可以訪問此信息。
一旦load.js
檢測到硬刷新,它就可以通過例如將URL參數附加到請求來將其傳播到依賴腳本(想想"?t=" + timestamp
)。
您可以嘗試檢查localStorage。 設置localStorage變量並進行檢查。 如果它在那里,它不是一個硬刷新,否則,它是一個很難刷新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.