As a note, you'll need to convert the result of getSelection() to a
string or else it won't serialize correctly for the sendRequest call.
window.getSelection().toString() is probably easiest.

If you want to get access to the selected text in a popup, you'll need
to pass it onward from the background page.  There's probably a better
way to do this, but here's a background page which forwards the
message:

<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>

and here's a popup which displays it (it's probably not a great idea
to just innerHTML the text, but this is just an example):

<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>

The content script is almost identical to Aaron's:

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

~Arne


On Nov 24, 11:08 am, Aaron Boodman <a...@google.com> wrote:
> You can setup a content script that does it for you that your popup
> communicates with. I do it with three files:
>
> background.html (register this in your manifest with the background_page key):
> =============
> function getSelection() {
>   chrome.tabs.executeScript(null,  // by default, executes in current tab
>     {  file: "content_script.js"});
>
> }
>
> chrome.extension.onRequest.addListener(function(request) {
>   alert("got selection: " + request);
>
> });
>
> content_script.js
> ============
> chrome.extension.sendRequest(window.getSelection());
>
> popup.html
> ========
> chrome.extension.getBackgroundPage().getSelection();
>
> I haven't tested any of this, but I think it should work :)
>
> - a

--

You received this message because you are subscribed to the Google Groups 
"Chromium-extensions" group.
To post to this group, send email to chromium-extensi...@googlegroups.com.
To unsubscribe from this group, send email to 
chromium-extensions+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/chromium-extensions?hl=en.


Reply via email to