[英]How to get check if a page gets reloaded with js
您現在如何檢查頁面是否重新加載?
以前是這樣的:
//check for Navigation Timing API support if (window.performance) { console.info("window.performance works fine on this browser"); } console.info(performance.navigation.type); if (performance.navigation.type == performance.navigation.TYPE_RELOAD) { console.info( "This page is reloaded" ); } else { console.info( "This page is not reloaded"); }
但現在我發現導航類型已被棄用: https://developer.mozilla.org/en-US/docs/Web/API/Performance/navigation
然后我檢查了替換: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming
即使在閱讀之后,我仍然不太清楚我是如何做到這一點的。 那么檢查頁面是否刷新的新方法是如何工作的呢?
我讀過之后也試過這個:
if (PerformanceNavigationTiming.type == "reload") { alert('page reloaded') }
但隨后將不會顯示警報。
之后我嘗試了這個:
if (PerformanceNavigationTiming.type == PerformanceNavigationTiming.TYPE_RELOAD) { alert('page reloaded') }
但是它也會在沒有頁面刷新的情況下顯示警報。
然后我嘗試的最后一件事:
const pageAccessedByReload = ( (PerformanceNavigationTiming && PerformanceNavigationTiming.TYPE === 1) || window.performance.getEntriesByType('navigation').map((nav) => nav.type).includes('reload') ); alert(pageAccessedByReload);
但這也給了我一個警報,要么在未重新加載時為假,在重新加載時為真。 而且我只希望在重新加載頁面時發出警報。
您必須記住在閱讀新的 API 文檔時始終注意,輸入 PerformanceNavigationTiming 是一個字符串而不是數字,因此正確的方法是:
if (window.PerformanceNavigationTiming) { console.info("window.performance works fine on this browser"); if (PerformanceNavigationTiming.type === "reload") { console.info("This page is reloaded"); } else { console.info("This page is not reloaded"); } }
我終於找到了解決方案:
const pageAccessedByReload = ( (PerformanceNavigationTiming && PerformanceNavigationTiming.TYPE === 1) || window.performance.getEntriesByType('navigation').map((nav) => nav.type).includes('reload') ); if (pageAccessedByReload == true) { alert(pageAccessedByReload); }
現在它只會在頁面刷新時顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.