2014-09-11 58 views
1

我在擴展聲明清單2背景頁和擴展本身是持久: 「背景」:{ 「老大難」:真實, 「腳本」:「UrlMonitor.js」 「background.js」] }背景腳本加載多次

在我background.js,我創建了UrlMonitor的一個實例(UrlMonitor.js declated)

var monitor = new UrlMonitor(); 

在UrlMonitor.js,我有幾個全球由事件回調訪問的變量。

var nativePort = null; 
var TabInfoKP = new Object(); 
var TabInfoKPN = new Object(); 

我已經注意到,調用腳本加載多次,多次調用

var monitor = new UrlMonitor(); 

var nativePort = null; 
var TabInfoKP = new Object(); 
var TabInfoKPN = new Object(); 

我期待的腳本加載一次,並保持在後臺,只響應事件回調。我正在使用全局TabInfoKP來跟蹤選項卡狀態(通過在事件回調中更新它們)。通過多重初始化,我將以前存儲的信息放在變量中。即使在創建/更新新選項卡等情況下也會發生負載。

我做錯了什麼或者這是預期的功能嗎? 如果這是預期的功能,我的替代選擇是什麼?

P.S,我對JS和chrome擴展完全陌生。

+0

不可能說沒有更多的代碼。但是,不,後臺腳本應該只執行一次,如果它是持久的。 – Xan 2014-09-11 11:19:07

+0

缺少的唯一代碼是回調。我有tabs.OnCreated和tabs.OnUpdated的回調,他們所做的就是將tabId和被訪問的url添加到全局TabInfoKP變量中。 – Sri 2014-09-11 12:38:18

回答

0

好的......我設法避免了這種情況的發生。 我一直在調試器下運行這個腳本,每當我調試到斷點時,我都會按F5(從Visual Studio老習慣),這似乎觸發了這個問題。也許運行時正在重新加載腳本並重新開始。

不好意思,但今天一直困擾着我,我所要做的只是將鼠標懸停在chrome調試器的continue圖標上,以實現F5不是指定的快捷鍵! 有誰知道鉻調試器中的快捷方式是什麼?

+0

它是f8,而在源選項卡上 – James 2014-09-11 13:21:12

+0

現在在擴展列表頁面上嘗試。 – Xan 2014-09-11 13:34:57