2014-07-23 159 views
2

我正在嘗試開發Chrome擴展。我試圖從後臺腳本發送一條消息給內容腳本。我曾嘗試下面的代碼:onMessage未在Chrome擴展的內容腳本中調用

清單

{ 
    .... 
    "background": { 
     "scripts": ["background.js"] 
    }, 
    "content_scripts": [ 
     { 
      "matches": ["http://myurl.com", "http://myurl.com"], 
      "js": ["content.js"], 
      "run_at": "document_end" 
     } 
    ] 
.... 
} 

背景腳本:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    console.log("inside"); 
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { 
    console.log("Response"); 
    }); 
}); 

內容腳本:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
    console.log("From Background Script: " + console.greeting); 
    return true; 
    }); 

我檢查控制檯。 「內部」和「響應」正在被記錄,但不是「從後臺腳本...」

有什麼問題?

+0

嘗試console.log(「From Background Script:」+ request.greeting); – vux777

+0

我試過了。不工作。我檢查了兩個Javascript控制檯和擴展頁面 –

+0

的「檢查視圖」控制檯這應該被記錄在內容腳本正在運行的頁面上......你何時激發你的chrome.tabs.query? – vux777

回答

0

您chrome.tabs.query是在非常會議開始執行,並在那一刻發短信......你需要用它在某些情況下像

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) { 
    if (tab.url == "http://www.myurl.com") { 
     chrome.tabs.sendMessage(tab.id, {greeting: "hello"}, function(response) { 
      console.log("Response"); 
     }); 
    } 
}); 

,實際上你不需要標籤.querry ...你從chrome.tabs.on更新了監聽器的ID以發送msg

相關問題