Sto scrivendo un addon di Firefox che viene attivato ogni volta che una parola viene evidenziata. Tuttavia ho bisogno di uno script che rilevi quando viene evidenziata una parola, e sono bloccato. Un esempio potrebbe essere nytimes.com (quando leggi un articolo e evidenzi una parola, viene visualizzata l'icona di riferimento). Tuttavia, lo script di nytimes.com è super complesso. Ho 16 anni e non un gran programmatore, quindi è decisamente fuori dalla mia portata.Javascript: Come rilevare se una parola è evidenziata
risposta
Ecco uno script:
<script language=javascript>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
document.aform.selectedtext.value = txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()">
<form name=aform >
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
Per gentile concessione di Codice Toad:
http://www.codetoad.com/javascript_get_selected_text.asp
Nel tuo caso, si vorrebbe chiamare questo script quando la selezione è fatta, e poi si può elaborarlo come preferisci, con una richiesta AJAX per ottenere informazioni rilevanti, ad esempio, come probabilmente accade a NYTIME.
Il modo più semplice per eseguire questa operazione è rilevare gli eventi mouseup
e keyup
sul documento e controllare se è selezionato alcun testo. Quanto segue funzionerà in tutti i principali browser.
Esempio: http://www.jsfiddle.net/timdown/SW54T/
function getSelectedText() {
var text = "";
if (typeof window.getSelection != "undefined") {
text = window.getSelection().toString();
} else if (typeof document.selection != "undefined" && document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}
function doSomethingWithSelectedText() {
var selectedText = getSelectedText();
if (selectedText) {
alert("Got selected text " + selectedText);
}
}
document.onmouseup = doSomethingWithSelectedText;
document.onkeyup = doSomethingWithSelectedText;
Ma cosa succede se vuoi rilevare se una parola specifica è selezionata? Supponi di avere 'pippo' sulla pagina più volte e l'utente seleziona' pippo' come fai a sapere quali parole l'utente ha selezionato? – Jespertheend
Utilizzando rangy.js e jQuery:
$('#elem').on('keyup mouseup', function(){
var sel = rangy.getSelection()
if (sel.rangeCount === 0 || sel.isCollapsed) return
alert(sel.toString())
})
Usa seguente codice
(function() {
"use strict";
var showSelectedText = function (e) {
var text = '';
if (window.getSelection) {
text = window.getSelection();
} else if (document.getSelection) {
text = document.getSelection();
} else if (document.selection) {
text = document.selection.createRange().text;
}
console.log(text.toString());
}
document.onmouseup = showSelectedText;
if (!document.all) {
document.captureEvents(Event.MOUSEUP);
}
})();
- 1. Javascript - controlla se div contiene una parola?
- 2. Rilevare se una NSString contiene ...?
- 3. Come cambiare il colore della parola errata evidenziata?
- 4. Rilevare la parola dopo una regex
- 5. è javascript "return" veramente una * parola chiave *?
- 6. È possibile rilevare se è iniziata una transizione CSS arbitraria
- 7. È possibile rilevare JavaScript se il browser dell'utente supporta gzip?
- 8. Javascript per rilevare se l'utente cambia scheda
- 9. Come verificare se una parola è una parola inglese con Python?
- 10. Come posso rilevare una parola con riconoscimento vocale in Python
- 11. Come rilevare se una notifica è stata respinta?
- 12. come rilevare se la variabile è una stringa
- 13. Come rilevare se è supportata un'interfaccia grafica?
- 14. Come rilevare se una stringa è in formato URL usando javascript?
- 15. Come rilevare in javascript se al momento è visualizzata una Smart Banner App?
- 16. Come rilevare se è presente un microfono
- 17. Rilevare se JIT è disponibile
- 18. Come posso rilevare se Dispatcher.DisableProcessing è attivo?
- 19. Come rilevare se RecyclerView è vuoto?
- 20. Rilevare se una directory è una giunzione in Delphi
- 21. Come rilevare se SearchView è espanso?
- 22. Come rilevare se Daydream è attivo?
- 23. Come rilevare se $ _POST è impostato?
- 24. Come rilevare se un controllo di input HTML5 è supportato?
- 25. Come rilevare se i file javascript sono caricati?
- 26. Come rilevare se ASP.NET è abilitato in IIS 7
- 27. Determinare se una parola è un nome o meno
- 28. jQuery webcam/flash: come rilevare se la webcam è attiva?
- 29. Come rilevare se il tuo sito è caricato su SFSafariViewController
- 30. Come controllare se una parola esiste in una frase
continuo a vedere questo codice su SO, ed è sbagliato: 'finestra. getSelection() 'restituisce un oggetto' Selection', non una stringa. –
@tim, non tutta la verità. L'oggetto ha un metodo toString(). Quando è prevista una stringa, viene restituita una stringa, altrimenti, come si indica, viene restituito un oggetto. https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection –
@TedCohen: È vero che un oggetto 'Selection' ha un'implementazione sensibile' toString() 'ma il resto del tuo il commento non ha senso: un oggetto 'Selection' viene sempre restituito se' window.getSelection' esiste (cosa che fa in tutti i browser moderni). –