2017-09-17 21 views
1

我想定期設立一個背景腳本內容提取數據,並將其寫入文件(一種網頁刮)Chrome擴展的內容調用回調的背景,但參數是未定義

不幸的是我被困在最開始:

背景將消息發送到內容和調用回調,但該參數不正確傳遞,這是「未定義」無論我嘗試...

清單:

{ 
"manifest_version": 2, 
    "name": "Test Extension", 
    "version": "0.0", 

     "background": { 
      "persistent": false, 
      "scripts": ["background.js"] 
     }, 
     "content_scripts": [{ 
      "matches" : ["<all_urls>"], 
      "js": ["content.js"] 
     }], 
     "browser_action": { 
      "default_title": "Test Extension" 
     }, 

     "permissions": ["activeTab"] 
    } 

content.js

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) { 
    if (msg.text === 'report_back') { 
     sendResponse({data: "goodbye"}); 
    } 
}); 

background.js

chrome.browserAction.onClicked.addListener(function (tab) { 
chrome.tabs.sendMessage(tab.id, {text: 'report_back'}, function(response) { 
      console.log(response.data); 
     }); 
}); 

回答

0

如果您收到:

Error in event handler for (unknown): TypeError: Cannot read property 'data' of undefined at ...

我猜你是在擴展圖標點擊,當你在類似chrome://extensions

嘗試c從任何其他網站舔它,它應該工作。

+0

你是對的!但有趣的是,如果一旦我得到它,每次獨立選擇哪個選項卡,就會拋出失敗。我必須重新啓動(或者至少重新加載擴展名) 但這只是第一步:我真正需要的是在網站上動態更改字段的定期加載(每隔1-5秒)。所以,而不是「onClick」我想使用setInterval方法,但我如何獲得tabID? – Wolfgang

+0

@WolfgangHaring首先,不需要重新加載擴展程序,只需要加載當前頁面。其次,當你點擊擴展圖標時,你需要使用相同的功能,但是你希望它每隔1-5秒在每個頁面上始終發生?我想我回答了你目前的問題,但如果你需要更多關於Chrome擴展的問題,我會幫忙的。 – PredatorIWD

+0

我欣賞!我會嘗試重新加載頁面。我只需要間隔的事情。點擊擴展按鈕是我的出發點。 – Wolfgang

相關問題