Google Chrome扩展程序:将用户突出显示的网页文本传递给browser_action

时间:2010-03-05 10:03:53

标签: javascript google-chrome

我正在使用Chrome扩展程序,我需要将突出显示的文本传递给browser_action。我在Google群组中找到了以下代码,并且在撰写时它仍然有效 - 但它不再有效..

有没有人知道另一种解决方案?

background.html:

<html>
  <head>
    <script type="text/javascript">
      var selection_callbacks = [];

      function getSelection(callback) {
        selection_callbacks.push(callback);
        chrome.tabs.executeScript(null, { file: "contentscript.js" });
      };

      chrome.extension.onRequest.addListener(function (request) {
        var callback = selection_callbacks.shift();
        callback(request);
      });
    </script>
  </head>
  <body>
  </body>
</html>

popup.html:

<html>
  <head>
    <script type="text/javascript">
      function onSelection(text) {
        document.getElementById("output").innerHTML = text;
      }
      chrome.extension.getBackgroundPage().getSelection(onSelection);
    </script>
  </head>
  <body>
    <div id="output">
      This should be replaced with the selected text
    </div>
  </body>
</html>

contentscript.js:

chrome.extension.sendRequest(window.getSelection().toString());

1 个答案:

答案 0 :(得分:1)

您可以使用真实的content script,而不是使用chrome.extension.executeScript将JavaScript注入页面。然后,您可以使用chrome.tabs.sendRequest让background.html向内容脚本询问选择。