2012-06-10 105 views
1

在我的Google Chrome擴展程序中,我有一個content_script,我想與我的background_page進行通信。有誰知道這可以做到嗎?Google Chrome擴展程序 - content_scripts與background_page js文件進行通信

我發現了一些教程介紹了一個背景頁面如何與content_script通信,但正如我所說的,我需要相反的事情發生。

我想運行一個自動化腳本來每24小時清理一次緩存。我不能從content_script做到這一點,我必須從背景頁面做到這一點。我現在能夠正常工作的唯一方法就是如果我配上一個「按鈕」,但正如我之前所說的那樣,我希望它能夠每24小時自動運行一次。

BTW-我已經知道的內容腳本不能: 使用Chrome *的API(除了chrome.extension的部分)由它們的擴展的頁面定義 使用變量或函數 使用變量或函數通過網頁或定義。通過其他內容腳本

正如你可以看到列出的第一個項目是:鉻的API,但我需要在我的content_script中使用鉻API,所以希望有人有工作。請告訴我。

+1

[請提問前做一些研究(http://code.google.com/chrome/extensions/messaging.html) –

回答

3

Message Passing Doc from Google

內容腳本:

chrome.extension.sendRequest({greeting: "hello"}, function(response) { //request 
    console.log(response.farewell);   //receive response 
}); 

背景頁:

chrome.extension.onRequest.addListener( //listen to requests 
    function(request, sender, sendResponse) { 
    console.log(sender.tab ? 
       "from a content script:" + sender.tab.url : 
       "from the extension"); 
    if (request.greeting == "hello") 
     sendResponse({farewell: "goodbye"}); //send response 
    }); 

你也可以打開續之間的長期連接耳鼻喉科腳本和背景頁:
http://code.google.com/chrome/extensions/messaging.html#connect

contentscript.js 
================ 
var port = chrome.extension.connect({name: "knockknock"}); 
port.postMessage({joke: "Knock knock"}); 
port.onMessage.addListener(function(msg) { 
     if (msg.question == "Who's there?") 
    port.postMessage({answer: "Madame"}); 
    else if (msg.question == "Madame who?") 
    port.postMessage({answer: "Madame... Bovary"}); 
}); 


background.html 
=============== 
chrome.extension.onConnect.addListener(function(port) { 
    console.assert(port.name == "knockknock"); 
    port.onMessage.addListener(function(msg) { 
    if (msg.joke == "Knock knock") 
     port.postMessage({question: "Who's there?"}); 
    else if (msg.answer == "Madame") 
     port.postMessage({question: "Madame who?"}); 
    else if (msg.answer == "Madame... Bovary") 
     port.postMessage({question: "I don't get it."}); 
    }); 
}); 
相關問題