3

我正在開發谷歌瀏覽器擴展。當點擊彈出窗口時,我希望popup.html文件中的輸入框包含當前網頁的選定文本。獲取谷歌Chrome擴展的網頁選定文本

實施例的文本框:

<input id="searchBox" type="text" /> 

當文本在網頁中被選擇時,文本框應包含所選擇的字。我嘗試使用chrome.extension.getBackgroundPage().getSelection(),但它不起作用。

回答

4

有關於這個對谷歌組線程: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); 
} 

您可以在控制檯或插件,無論哪種方式,用這個。

1

你試圖做的事情需要很多編碼,因爲Chrome的極端安全防範措施。

chrome.extension.getBackgroundPage().getSelection()將不起作用,因爲「BackgroundPage」不是當前網頁。你需要這樣的東西:

chrome.tabs.executeScript(null, {code:"alert(window.getSelection().toString());"}) 
//alerts the selected text 

但是,將該文本轉移回彈出是一個長期和偏頭痛的過程。如果您有挑戰,請閱讀 Contentscripts and Extension Messaging

+0

但這個插件https://開頭chrome.google.com/extensions/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj獲取選擇來源。 – 2010-06-19 07:09:32

+1

是的。它使用了我向你展示的同樣的東西。 繼承人的腳本: 'chrome.tabs.executeScript(NULL,{文件: 「的script.js」});' 和: 'chrome.extension.onRequest.addListener( 函數(請求,發件人,第一部分基本上是我向你展示的代碼(除了在腳本文件中),第二部分是第二部分是代碼消息。 – tcooc 2010-06-19 16:58:09

3

這裏是讓所選擇的字符串形式的文字另一個簡單的解決方案,你可以很容易地使用這個字符串的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();