2013-10-03 56 views
16

我正在尋找一種方法將選定的文本放入我的Chrome擴展程序中。Chrome擴展程序獲取選定文本

我想要前。在Facebook供稿中選擇一個文本,當我點擊我的圖標時,它會得到它並在我的擴展中顯示選定的文本。

我得到這個至今:

chrome.tabs.executeScript(null, 
    {code:"alert(window.getSelection().toString());"}) 

它得到選定的文本,並在Chrome的消息提醒它。但是我想在我的html彈出窗口中顯示它。我想寫出來這樣:

document.getElementById("output").value = "Selected text here(but how)" 

需要幫助!我知道還有其他問題,但他們沒有給我正是我想要的..

+0

這是我結束了: chrome.tabs.executeScript(NULL,{代碼: 「window.getSelection()的toString();」}, 功能(結果){ 的document.getElementById(」輸出「)。value = results; } 作品! –

回答

26

您可以使用一個被執行的代碼最後計算的表達式回撥功能:

chrome.tabs.executeScript({ 
    code: "window.getSelection().toString();" 
}, function(selection) { 
    document.getElementById("output").value = selection[0]; 
}); 
+0

它在同源幀和不同源幀中不起作用。 此外它頻繁地返回實際上未選中的文本,因爲現在聚焦在不同的幀中。 此外,它不適用於輸入字段,但這不是問題: 'code \t let el = activeWindow.document.activeElement; \t如果(isTextElem(EL)){ \t \t如果(在El && el.selectionStart 'selectionStart'!== el.selectionEnd){ \t \t \t回el.value.substring(el.selectionStart,el.selectionEnd ); \t \t} \t} ' – vitaliydev

2

您可以通過使用Extensions Messaging。基本上,您的「後臺頁面」會將請求發送到您的服務。例如,假設您有一個「彈出式窗口」,一旦您點擊它,它會執行「Google搜索」,這是您的服務。

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if (request.method == "getSelection") 
     sendResponse({data: window.getSelection().toString()}); 
    else 
     sendResponse({}); // snub them. 
}); 

一些參考

1)Creating a chrome extension which takes highlighted text on the page and inserts it into a textarea in popup.html

或者你可以使用這個插件

2)https://chrome.google.com/webstore/detail/view-selection-source/fbhgckgfljgjkkfngcoeajbgndkeoaaj

+0

這不會發送給我的HTML文檔? –