0

我正在嘗試編寫一個Chrome擴展程序,它以編程方式將點擊事件發送到頁面上的特定鏈接。這個特定的鏈接在頁面上有已知的點擊事件處理程序,我可以通過Chrome的網絡檢查器看到。是否從主頁面上下文中擴展的Chrome擴展中觸發DOM事件?

我在Chrome擴展程序的content_page腳本中發送了一個jQuery .click()這個點擊事件,但它看起來像處理程序沒有觸發。當控制檯記錄jQuery .click()調用的結果時,我可以看到預期返回值回來了,所以我知道這段代碼實際上正在運行。我知道這個jQuery代碼可以工作,因爲我可以在該頁面的Chrome控制檯中粘貼相同的行,並獲得我期望的結果。

我瘋了,以爲我可以從分機的content_page觸發DOM事件?我知道content_page在一個單獨的環境中執行,但我確信觸發的DOM事件在兩個環境中都已冒泡。

(?如果我沒有瘋,你將如何在調試繼續)

+0

你能舉一個簡單的例子來證明這個問題嗎? –

回答

1

答案是肯定的 - 點擊事件繁殖,但有一些奇怪的事情發生時,我指定的DOM元素我想發送.click()與jQuery,但它使用本地DOM遍歷功能,如getElementsByClassName()時工作。

神祕的解決方案:只需使用vanillaJS方法就可以在DOM元素本身上調用click()而不是jQuery封裝的版本。

+1

使用DOM遍歷方法不能解決問題。它通過使用VanillaJS的'click()'方法而不是jQuery的'.click()'來解決。 '$('body')[0] .click();'也行。 –

+0

偉大的電話 - 謝謝@RobW –