2016-03-21 13 views
-2

Ich möchte eine Warnung anzeigen, wenn ein Benutzer einen Text auf einer Webseite auswählt. Der Alarm sollte denselben Text haben wie vom Benutzer ausgewählt. Wenn ein Benutzer einen Text nur dann auswählt, sollte der Alarm ausgegeben werden.Keine Alarmbox bei der Verwendung von window.selection() in JavaScript?

Zwei verschiedene Ansätze, die ich ausprobiert habe.

var range = window.getSelection().getRangeAt(0); 
var selectionContents = range.extractContents(); 
alert(selectionContents); 

Ausgang: Kein Alarm BOX

var selObj = window.getSelection(); 
var selectedText = selObj.toString(); 
alert(selectedText); 

Ausgang: Leere Warnfeld.

Referenzen:
https://developer.mozilla.org/en-US/docs/Web/API/Window/getSelection https://developer.mozilla.org/en/docs/Web/API/Selection

+1

Überprüfen Sie die Konsole, vielleicht etwas ist null; –

+2

Das Problem besteht darin, dass bei der Auswahl von Text kein Ereignis ausgelöst wird. Daher kann keine Warnung ausgegeben werden. – Fhtagn

+0

Welchen Event soll ich machen? Ich habe [link] (http://www.w3schools.com/jsref/dom_obj_event.asp) überprüft. Kannst du mir bitte einen kurzen Ausschnitt geben, in dem ich seit zwei Tagen feststecke? –

Antwort

1

Sie benötigen eine Logik in einem Event-Handler zu setzen, die click Ereignis funktionieren sollte, weil in der Regel die Auswahl auf ein Element klicken beinhaltet. Eventuell möchten Sie Ihren Handler auch an das Ereignis keyup binden, wenn der Benutzer Text über die Tastatur auswählt.

Ich habe die Seite body verwendet, aber Sie könnten verwenden, was auch immer Sie Container für Ihren Text bevorzugen.

Html:

<body>Some text to select. Only alert when "Some text" is highlighted.<body> 

Javascript:

// add event listener to table 
document.body.addEventListener("click", function(){ 
    var selObj = window.getSelection(); 
    var selectedText = selObj.toString(); 
    if (selectedText === "Some text") { 
     alert(selectedText); 
    } 
}, false); 

https://jsfiddle.net/jj8yoa8L/1/

+0

Problem mit dieser Lösung ist, dass immer, wenn der Benutzer auf Webseite trotzdem klickt, eine leere Warnung ausgelöst wird. Die richtige Lösung sollte nur dann eine Warnung ausgeben, wenn der Benutzer den Text auswählt und sich nicht um den Klick-Ereignishandler dreht. Dafür muss es eine Alternative geben. –

+0

Okay, danke für das Abstimmen, Ihre Antwort wurde als korrekt markiert. –

+0

Ich warne nur, wenn selectedText einem Wert entspricht, daher gibt es keine Möglichkeit, einen leeren Alarm mit meinem Code zu erhalten. Sie müssen es kopiert haben und einen Fehler eingeführt haben. Sie sind herzlich willkommen auf der Down-Abstimmung, überprüfen Sie Ihren Code, bevor Sie nach Lösungen suchen. –

Verwandte Themen