1

Google Chrome拡張機能には、background_pageと通信したいcontent_scriptがあります。誰かがこれを行う方法を知っていますか?

バックグラウンドページがcontent_scriptと通信する方法について説明しているチュートリアルをいくつか見つけましたが、前述したように、逆のことが発生する必要があります。

自動スクリプトを実行して、24時間ごとにキャッシュをクリアしたいと思います。content_scriptからこれを行うことはできません。バックグラウンドページからこれを行う必要があります。これを今すぐ機能させる唯一の方法は、「ボタン」を結ぶことですが、前に述べたように、24時間ごとに自動で実行する必要があります。

ところで、コンテンツスクリプトでは次のことができないことをすでに認識しています。chrome。* APIを使用する(chrome.extensionの一部を除く)拡張機能のページで定義された変数または関数を使用するWebページまたは他のコンテンツスクリプトで定義された変数または関数を使用する

ご覧のとおり、最初にリストされている項目はchrome APIですが、content_scriptでchrome APIを使用する必要があるため、誰かが回避策を持っていることを願っています。私にお知らせください。

4

1 に答える 1

3

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."});
  });
});
于 2012-06-10T21:39:54.680 に答える