2013-10-03 12 views
16

Szukam sposobu na dodanie wybranego tekstu do mojego rozszerzenia do Chrome.Rozszerzenie Chrome otrzymuję zaznaczony tekst

Chcę np. wybierz tekst w kanale na facebooku, a kiedy kliknę ikonę, otrzyma ją i wyświetli zaznaczony tekst w moim rozszerzeniu.

mam to do tej pory:

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

robi zaznaczony tekst i ostrzec go z komunikatem w Chrome. Jednak chcę pokazać to w moim wyskakującym okienku HTML. Chcę napisać ją tak:

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

Potrzebujesz pomocy! i wiem, że jest inne pytanie na ten temat, ale nie dali mi dokładnie tego, czego chcę.

+0

To, co skończyło się z: chrome.tabs.executeScript (null, {code: "window.getSelection() toString();"}, funkcyjne (wyników) { document.getElementById (” output "). value = wyniki; } Działa! –

Odpowiedz

26

Można użyć ostatniego wyrażenia oceniana przez wykonywanego kodu w funkcja oddzwaniania:

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

Nie działa w klatkach o tym samym początku i różnych klatkach początkowych. Również często zwraca tekst, który nie jest faktycznie wybrany, ponieważ teraz ustawiono ostrość w innym widoku. Również nie działa w polach wejściowych, ale to nie jest problem: 'kod \t let el = activeWindow.document.activeElement; \t if (isTextElem (EL)) { \t \t jeśli ('SelectionStart' w el && el.selectionStart! == el.selectionEnd) { \t \t \t powrotu el.value.substring (el.selectionStart, el.selectionEnd); \t \t} \t} } ' – vitaliydev

2

Możesz to zrobić za pomocą Extensions Messaging. Zasadniczo, twoja "strona w tle" wyśle ​​żądanie do twojej usługi. Na przykład powiedzmy, że masz "wyskakujące okienko", a po jego kliknięciu zrobi ono "wyszukiwarkę Google", która jest twoją usługą.

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

Niektóre Referencje

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

lub można użyć tej wtyczki

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

+0

To nie przyśle go do mojego dokumentu html? –

Powiązane problemy