2012-01-30 18 views
9

questo non è solo per l'estensione Chrome di Google, ma anche per javascripteventi di selezione javascript testo

Sto scrivendo un'estensione Chrome in cui quando un testo viene evidenziata e un menu di scelta rapida è mostrato i visualizzazione mia voce nella menù contestuale che quando cliccata deve elaborare il testo

selezionata dopo aver portato il menù contestuale e selezionando l'opzione ottengo oggetto vuoto con tutti i valori zero e nulli

quindi voglio implementare un meccanismo che tamponare il testo selezione non appena noi er rilascia il mouse dopo aver selezionato il testo in modo che un evento possa sparare e se qualche cosa spara posso fare una copia del testo selezionato in una variabile globale e posso elaborare in seguito

window.getSelected() funziona bene quando io provato con un codice di test separato, ma durante l'utilizzo con la mia estensione dove ho far apparire il menu contestuale non ho potuto ottenere il testo effettivo selezionato

il testo selezionato come la vedo nella documentazione sarebbe di testo e HTML

suggerimenti per favore ...


Qui ho incollato quello che sto facendo. quando ho clic su Salva per promemoria parola ottengo una stringa vuota

enter image description here

e qui è il resto del codice


<script> 
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 


    switch(request.message) 
    { 
     case 'getSelection': 
      sendResponse({data: window.getSelection().toString()}); 
     break; 

     case 'createMenu': 
      seecon(); 
      break; 

     default: 
      sendResponse({data: 'Invalid arguments'}); 
     break; 
    } 
}); 

function conOnClick(info,tab) 
{ 

/* 
    chrome.extension.sendRequest(tab.id, {method: 'getSelection'}, function(response){ 
     alert(response.data); 
    }); 
*/ 
} 


//function seecon() 
{ 
var contexts = ["selection"]; 
for (var i = 0; i < contexts.length; i++) { 
    var context = contexts[i]; 
    var title = "Save to Word Reminder"; 
    var id = chrome.contextMenus.create({"title": title, "contexts":[context], 
             "onclick": conOnClick}); 

} 

} 



</script> 

risposta

5

Vorrei semplicemente impostare un evento mouseUp su il documento, quindi controlla se c'è qualche selezione (e se sì, se la selezione è diversa dalla selezione precedente).

+0

per ogni mouse in alto potrebbero esserci troppi eventi ... spero che ci sia qualche tipo di evento ... c'è? –

+0

potrei pensare che sia un buon punto, ma non l'ho mai sperimentato. e gli utenti se ci potrebbero essere alcune alternative allora sarebbe anche bello tenere a mente. quindi mi aspetto più alternative e opzioni. –

+0

Non è presente alcun evento sulle modifiche alla selezione del testo. Pertanto, è necessario farlo come suggerito (eventualmente aggiungendo un KeyUp). Potrebbe essere inefficiente, ma non c'è altro modo ... –

3

È possibile ascoltare le modifiche nella selezione del testo tramite l'evento selectionchange. Credo che sia disponibile solo nei browser WebKit.

Problemi correlati