我在擴展聲明清單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擴展完全陌生。
不可能說沒有更多的代碼。但是,不,後臺腳本應該只執行一次,如果它是持久的。 – Xan 2014-09-11 11:19:07
缺少的唯一代碼是回調。我有tabs.OnCreated和tabs.OnUpdated的回調,他們所做的就是將tabId和被訪問的url添加到全局TabInfoKP變量中。 – Sri 2014-09-11 12:38:18