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 <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/chromium-extensions?hl=en.