2016-09-21 59 views
1

我正在構建一個帶有搜索表單的popup.html的Chrome擴展程序。與Travelocity或Kayak類似,表單中包含複選框,用戶可以選擇要查詢的網站。Chrome擴展程序 - 同時在多個新標籤頁中運行executeScript

提交後,popup.js將根據所選複選框啓動多個新選項卡。在每個新選項卡的tabs.create()回調中,我使用executeScript來執行以下操作: (A)將用戶的查詢插入到每個新頁面的搜索表單中,並且(B)在這些頁面上提交搜索表單。

當一個複選框被選中時(即新標籤被啓動),我的代碼正在工作,但是當同時創建多個新標籤時,看起來executeScript並不一致地運行。有時它起作用,有時它不起作用。

這使我相信腳本執行的時間存在某種問題,但我不確定。

如果您有任何想法發生了什麼,我很樂意聽取您的建議。

此外,我很感激任何資源在如何調試這種問題在未來。

這是我在GitHub上的代碼...

非常感謝!

+0

對不起,我應該問一個關於調試的更具體的問題 - 我熟悉devtools,但在這種情況下,我還沒有找到一種方法來添加一個斷點到剛打開的標籤。我將如何調試由executeScript插入的代碼?另外,你提到直接URL W /搜索參數。我查詢的兩個網站沒有支持此功能的網址結構。我想你可以在我的代碼中看到,我儘可能使用直接URL。謝謝你的幫助! :) – rossmorey

回答

2

似乎當你打開多個選項卡 - popup.html失去焦點並關閉,所以在tabs.create回調注入您的代碼將不會執行。

嘗試創建標籤「活動:假」選項,如:

chrome.tabs.create({url: stringToObj[org], active:false} ... 

我認爲這將幫助你。

而且還... 它在你的SESAC注入代碼中的錯誤:如果在彈出的窗口中沒有定義搜索類型,阻止

input[value="undefined"] 

不會被發現,所以「選中」屬性將被稱爲在「未定義」,這將阻止你注入腳本執行。

+0

輝煌 - 謝謝!這正是問題所在!關於「未定義」的搜索類型問題,輸入驗證是我的下一個要實現的功能。再次感謝。 :) – rossmorey

+0

很高興幫助你!祝你好運! :) – MobDev

相關問題