2009-05-18 11 views
10

per una pagina comecome fare clic o doppio clic su una parola su una pagina Web per attivare un gestore di eventi?

http://www.answers.com

se l'utente fa doppio clic su qualsiasi parola nella pagina, una scatola pop-up apparirà e mostra la definizione per quella parola.

Posso pensare a un modo di usare lo script DOM per suddividere tutte le parole nella pagina e poi farle andare sotto un elemento separato "span" ... ma altrimenti non è vero che se tutto il il testo è sotto un elemento "p", quindi il nodo dell'elemento "p" viene attivato per gestire l'evento doppio clic, ma non esiste un modo semplice per dire su quale parola viene cliccato?

+0

Buona domanda, funzionalità pulito, starà a guardare questa domanda –

risposta

15

è sufficiente aggiungere un doppio evento click per l'intero documento, in questo modo:

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); 
}); 

Se si voleva solo questo al lavoro su alcuni paragrafi, si cambierebbe il selettore a p.myclass o qualcosa di simile. Questo dipende dal fatto che il doppio clic su una parola lo evidenzia nei browser. Non sono proprio sicuro se sia esattamente come lo fa answer.com, per essere onesti.

+0

picchiarmi qualche minuto. Stavo per suggerire la stessa cosa. +1 –

+0

Non riesco a farlo funzionare. http://erxz.com/pb/25570 – radicalmatt

+0

Siamo spiacenti, il problema è che la funzione getSelection definita dall'utente sta clobberando window.getSelection. Una semplice soluzione sta semplicemente rinominando la funzione definita dall'utente. – radicalmatt

5

Ecco qui, un articolo del blog che descrive come farlo usando jQuery. La sua implementazione di prova è simile a ciò che si vuole, vale a dire un doppio click una parola tira sulla definizione da un dizionario:

Using jQuery and Double clicks to get data