0

美好的一天,
我有這個問題,只能加載一次的谷歌Chrome擴展。例如,我與soundcloud有關。我加載頁面,擴展名正在工作,但是當我點擊'相關曲目'中的某首歌時,我想要再次加載擴展名。當我刷新頁面時,它可以正常工作,但是當我點擊頁面上的某首歌曲時,它不會再次加載。
我的猜測是頁面沒有'完全刷新',但只有部分DOM被改變了,所以這可能是內容腳本不能再次運行的原因。
提前致謝如何每次運行內容腳本

+0

msny其他問題已經涵蓋這一點。其他問題還包括通過pushState檢測url何時更改 –

回答

0

當頁面沒有被刷新時,爲了讓你的內容腳本動作,你必須定義它的觸發器。

大多數情況下,您希望使用點擊事件來處理需要執行操作的特定操作。將你的代碼的相關部分包裝在一個函數中,並用你的相關事件觸發代碼。一般例如:

function myMainFunction(){ 
    // Whatever happens on load or click... 
} 

// Register to run on load: 
$(myMainFunction); 

// Register to run when an element with id "triggerElement#" is clicked: 
$("#triggerElement1").click(myMainFunction); 
$("#triggerElement2").click(myMainFunction); 
// ... 

第二個選項,如果相關,是定期運行腳本:從非常小的值

// Set to run every 5 seconds (5000 ms): 
setTimeout(myMainFunction, 5000); 

在這種情況下,保持距離,因爲這會造成負荷。另外請注意,這本質上是一個無限循環,因此請遠離內存泄漏。


來源: