亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Chrome擴展程序:后臺腳本未啟動,僅在刷新后

Chrome擴展程序:后臺腳本未啟動,僅在刷新后

互換的青春 2022-09-02 10:26:14
三天前,我開始使用chrome擴展程序,我非常喜歡它。我遇到了一個問題:我最小化了重現我的問題的腳本:如果我 stackoverflow.com,我可以單擊該圖標,如果它向后臺腳本發送消息并收到消息“工作”,則會打開一個彈出窗口,上面寫著“工作”。如果我現在重新啟動瀏覽器,我會得到一個彈出窗口,說明開發人員模式下的擴展可能是有害的,以及我是否要停用它們。我關閉此消息,當我現在單擊擴展名時,它不起作用,我收到以下錯誤:Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.我發現后臺腳本沒有運行(我沒有收到來自后臺的警報.js或打印到后臺.js控制臺)。我想擴展程序以及背景.js可能被chrome阻止啟動,因為它是開發人員模式下的擴展程序。使擴展再次運行的唯一方法是從 chrome://extensions 刷新擴展。我嘗試使用持久和非持久背景腳本,但這并沒有改變行為。我的分析是否正確,因此是否是在 Webstore 上部署腳本以使其正常運行的唯一解決方案?或者,是否有其他方法可以在Chrome啟動時使開發人員模式下的應用程序啟動?下面是最小示例:manifest.json{    "name": "BackgroundScript Error",    "version": "0.0.1",    "manifest_version": 2,    "description": "When starting Chrome, background doesn't start, but when refreshing, background starts",    "page_action": {        "default_icon": "icon.png",        "default_popup": "popup.html"    },    "permissions": ["declarativeContent", "<all_urls>"],    "background": {        "scripts": ["background.js"],        "persistent": false    }}背景.jschrome.runtime.onInstalled.addListener(function() {    console.log('Background script is running');    alert("Background is running");    chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {    chrome.declarativeContent.onPageChanged.addRules([{        conditions: [new chrome.declarativeContent.PageStateMatcher({            pageUrl: {hostEquals: 'stackoverflow.com'},        })],        actions: [new chrome.declarativeContent.ShowPageAction()]    }]);    });    console.log('setting up connection to popup');    chrome.runtime.onConnect.addListener(connected);});chrome.runtime.onMessage.addListener(function(request, sender) {    console.log(request.action);});function connected(p) {    console.log("connected to "+p);    p.postMessage({action: 'didSomething', result: 'worked' });    p.onDisconnect.addListener(disconnected);}function disconnected(p) {    console.log("disconnected from "+p);}
查看完整描述

2 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

不,您無需部署到網上商店即可使其正常工作。

你遇到了一個問題,因為你已將大部分后臺腳本活動附加到偵聽器 - 僅當安裝擴展或清單版本更改時才會觸發偵聽器。第二次重新啟動瀏覽器時,您的擴展已安裝,清單版本保持不變,因此不會觸發該事件。chrome.runtime.onInstalled


查看完整回答
反對 回復 2022-09-02
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

我想出了該怎么做:

如前所述,已安裝偵聽器中的函數僅在實際安裝腳本時調用(例如刷新),而不是在重新啟動瀏覽器時調用。

我發現了我的新手錯誤:我異步注冊了聽眾,因為在Chrome文檔中被列為“不該做”。詳細來說,這條線應該從已安裝的監聽器中取出:

chrome.runtime.onConnect.addListener(connected);

感謝您為我指出正確的方向!


查看完整回答
反對 回復 2022-09-02
  • 2 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號