我可以檢測history.pushState
鉻瀏覽器用戶腳本(而不是擴展),沒有輪詢(或突破腳本的孤立世界攔截在網頁的JavaScript上下文中的調用)URL更改?如何攔截chrome腳本中的pjax頁面更改?
我的問題,更詳細:
由於Github使用history.pushState
[WHAT-WG specs]通過[minimized example]的pjax在站點頁面到頁面的網站導航,而不是重新加載整個頁面爲你的方式瀏覽網站時,只有當您在該網址輸入網站或手動強制重新加載網頁時,纔會觸發針對網站上特定網址的用戶腳本。
我寫一個小的用戶腳本庫on.js對於幹:荷蘭國際集團了用戶腳本,處理那種對他們的事情通過攔截pushState
通話時看到我們是一個新的網頁主機腳本要在運行和只有在相關時才援引它。
這將是比較容易,如果history.pushState
引發的事件調用時,但最好我可以告訴,沒有popstate
事件獲取時的第一頁加載或用戶觸發的歷史淵源/向前運動,這是相當無用除了解僱我的目的。我發現限制它只有一個pjax/github解決方案 - 當一個新的頁面加載時,github激發了一個$(document).trigger('pageUpdate')
事件,但jQuery
在內部而不是通過DOM事件實現了這些,我聽不到來自isolated world我的用戶腳本運行時,除非我在頁面本身注入一個小監聽器,讓其jQuery
實例向我報告此事件,然後我不妨劫持頁面的history.pushState
本身。
有沒有人看到其他整潔的方式來實現這一目標?
因此,我現在搜索後再次發現您的問題與解答,以前的代碼不再適用於使用GreaseMonkey(讀取Firefox)對沙箱進行的更改。你的代碼將失敗,因爲Github加強了他們的CSP以禁止內聯JavaScript。查看解答的其他答覆。 – jerone