我正在開發谷歌瀏覽器擴展。當點擊彈出窗口時,我希望popup.html文件中的輸入框包含當前網頁的選定文本。獲取谷歌Chrome擴展的網頁選定文本
實施例的文本框:
<input id="searchBox" type="text" />
當文本在網頁中被選擇時,文本框應包含所選擇的字。我嘗試使用chrome.extension.getBackgroundPage().getSelection()
,但它不起作用。
我正在開發谷歌瀏覽器擴展。當點擊彈出窗口時,我希望popup.html文件中的輸入框包含當前網頁的選定文本。獲取谷歌Chrome擴展的網頁選定文本
實施例的文本框:
<input id="searchBox" type="text" />
當文本在網頁中被選擇時,文本框應包含所選擇的字。我嘗試使用chrome.extension.getBackgroundPage().getSelection()
,但它不起作用。
有關於這個對谷歌組線程:how to get HTML code from selection?
var selection = window.getSelection();
var range = selection.getRangeAt(0);
if (range) {
var div = document.createElement('div');
div.appendChild(range.cloneContents());
alert(div.innerHTML);
}
您可以在控制檯或插件,無論哪種方式,用這個。
你試圖做的事情需要很多編碼,因爲Chrome的極端安全防範措施。
chrome.extension.getBackgroundPage().getSelection()
將不起作用,因爲「BackgroundPage」不是當前網頁。你需要這樣的東西:
chrome.tabs.executeScript(null, {code:"alert(window.getSelection().toString());"})
//alerts the selected text
但是,將該文本轉移回彈出是一個長期和偏頭痛的過程。如果您有挑戰,請閱讀 Contentscripts and Extension Messaging。
這裏是讓所選擇的字符串形式的文字另一個簡單的解決方案,你可以很容易地使用這個字符串的div元素孩子添加到您的代碼:
var text = '';
if(window.getSelection){
text = window.getSelection();
}else if(document.getSelection){
text = document.getSelection();
}else if(document.selection){
text = document.selection.createRange().text;
}
text=text.toString();
但這個插件https://開頭chrome.google.com/extensions/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj獲取選擇來源。 – 2010-06-19 07:09:32
是的。它使用了我向你展示的同樣的東西。 繼承人的腳本: 'chrome.tabs.executeScript(NULL,{文件: 「的script.js」});' 和: 'chrome.extension.onRequest.addListener( 函數(請求,發件人,第一部分基本上是我向你展示的代碼(除了在腳本文件中),第二部分是第二部分是代碼消息。 – tcooc 2010-06-19 16:58:09