2009-05-18 8 views
10

für eine Seite wieWie wird ein Klick oder Doppelklick auf ein Wort auf einer Webseite ausgeführt, um einen Event-Handler auszulösen?

http://www.answers.com

, wenn der Benutzer doppelklickt auf ein beliebiges Wort in der Seite, erscheint ein Pop-up-Fenster nach oben zeigen und zeigt die Definition für das Wort.

Ich kann mir eine Möglichkeit vorstellen, mit DOM-Scripting alle Wörter auf der Seite zu zerlegen und sie dann unter ein separates "span" -Element zu stellen ... aber ansonsten ist es nicht wahr, dass wenn alle Text ist unter einem "p" -Element, dann wird der "p" -Elementknoten ausgelöst, um das Doppelklick-Ereignis zu behandeln, aber es gibt keine einfache Möglichkeit zu sagen, auf welches Wort geklickt wird?

+0

Gute Frage, ordentlich Funktionalität, wird diese Frage beobachten mich –

Antwort

15

Sie einfach ein Doppelklick-Ereignis auf das gesamte Dokument, wie so hinzufügen:

function get_selection() { 
    var txt = ''; 
    if (window.getSelection) { 
     txt = window.getSelection(); 
    } else if (document.getSelection) { 
     txt = document.getSelection(); 
    } else if (document.selection) { 
     txt = document.selection.createRange().text; 
    } 
    return txt; 
} 

$(document).dblclick(function(e) { 
    var t = get_selection(); 
    alert(t); 
}); 

Wenn Sie nur dieses auf ausgewählten Abschnitten arbeiten wollen, würden Sie den Wähler auf p.myclass oder so etwas ändern. Dies hängt davon ab, dass ein Doppelklick auf ein Wort es in Browsern hervorhebt. Ich bin mir nicht sicher, ob antails.com genau das tut, um ehrlich zu sein.

+0

Schlagen ein paar Minuten. Ich wollte das Gleiche vorschlagen. +1 –

+0

Ich kann nicht scheinen, dass dies funktioniert. http://erxz.com/pb/25570 – radicalmatt

+0

Sorry, das Problem war, dass die benutzerdefinierte getSelection-Funktion clobbering window.getSelection ist. Eine einfache Lösung ist das Umbenennen der benutzerdefinierten Funktion. – radicalmatt

5

Hier ein Blogartikel, der beschreibt, wie Sie dies mit jQuery machen. Sein Test-Implementierung ist ähnlich dem, was Sie wollen, nämlich einen Doppelklick ein Wort, das die Definition aus einem Wörterbuch nach oben zieht:

Using jQuery and Double clicks to get data