2013-10-03 26 views
16

Sto cercando un modo per ottenere il testo selezionato nella mia estensione di Chrome.Chrome Extension diventa testo selezionato

voglio es. seleziona un testo nel feed di Facebook e quando clicco sulla mia icona lo otterrà e mostrerà il testo selezionato nella mia estensione.

ho ottenuto questo finora:

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

ottiene il testo selezionato e avvisa con un messaggio in Chrome. Comunque voglio mostrarlo nel mio html popup. Voglio scriverlo in questo modo:

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

Hai bisogno di aiuto! e so che c'è un'altra domanda al riguardo, ma non mi hanno dato esattamente quello che voglio ..

+0

Questo è quello che ho finito con: chrome.tabs.executeScript (null, {codice: "window.getSelection() toString();"}, funzione (risultati) { document.getElementById (" risultato "). valore = risultati; } Opere! –

risposta

26

È possibile utilizzare l'ultima espressione valutata dal codice eseguito in un funzione di richiamata:

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

Non funziona nei frame con origini uguali e con frame di origine diversa. Inoltre restituisce il testo che in realtà non è selezionato perché mette a fuoco in una cornice diversa ora. Anche nei campi di inserimento non funziona, ma non è un problema: 'codice \t let el = activeWindow.document.activeElement; \t se (isTextElem (el)) { \t \t if ('selectionStart' a el && el.selectionStart! == el.selectionEnd) { \t \t \t ritorno el.value.substring (el.selectionStart, el.selectionEnd); \t \t} \t} ' – vitaliydev

2

È possibile farlo utilizzando Extensions Messaging. Fondamentalmente, la tua "pagina di sfondo" invierà la richiesta al tuo servizio. Ad esempio, diciamo che hai un "popup" e una volta cliccato, farà una "ricerca Google" che è il tuo servizio.

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

alcuni riferimenti

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

oppure è possibile utilizzare questo plugin

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

+0

Non lo invierò al mio documento html? –

Problemi correlati