Quando utilizzare event.initMouseEvent per simulare i clic del mouse?

5

Mi chiedo se ci siano casi d'uso benigni per simulare i clic del mouse usando event.initMouseEvent. Ho scoperto che è usato per creare annunci pop-under nel modo seguente:

        var e = document.createEvent('MouseEvents');
        e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, true, false, false, true, 0, null);
        a.dispatchEvent(e);

Questo codice simula un clic sulla finestra del browser di apertura, per forzare la finestra appena aperta al di sotto di essa. Il male.

Sto pensando di impedire semplicemente tutti i clic simulati nel mio browser tramite un'estensione del browser, ma mi chiedo se potrei rompere siti e comportamenti utili nel processo. Quindi mi chiedo quali siano le situazioni che giustificano la simulazione dei clic del mouse e se ci sono grandi siti che lo usano in modi non malvagi.

    
posta Protector one 25.07.2013 - 12:46
fonte

2 risposte

6

Ignoriamo il fatto che il fatto che un clic del mouse simulato causi l'azione predefinita è solo per mantenere la compatibilità all'indietro - quindi il codice che hai menzionato nel tuo esempio è davvero malvagio.

Esistono molti casi legittimi in cui si desidera simulare eventi del mouse:

  • Test - Questo è il più importante di gran lunga secondo me. Spesso vuoi verificare che il tuo codice reagisca correttamente. Ad esempio, si desidera verificare che quando si fa clic su un pulsante diventi inattivo (quindi l'utente non sarà in grado di fare nuovamente clic per inviare di nuovo una chiamata AJAX, ad esempio). La simulazione degli eventi utente è una tecnica efficace per testare la logica di visualizzazione. La simulazione dell'interazione con l'utente è in generale molto utile per testare i sistemi GUI.
  • Lavorare con codice esterno : a volte lavori con un plug-in o una libreria con un'API inconcisa. A volte non espone le funzioni effettive ma ti dice che fare clic sull'elemento X farà Y. La triste verità è che tali plugin sono più comuni di quanto vorremmo ammettere e simulare eventi è un modo per parlare con tali plugin. / li>
  • Scraping : a volte potresti voler simulare azioni dell'utente per ottenere informazioni per lo scraping quando tali informazioni non sono altrimenti disponibili. Ad esempio, se desideri estrarre tutte le informazioni da una pagina ma quella pagina contiene informazioni che richiedono un clic per ottenere.
  • Automazione con gli script degli utenti : a volte finisci per scrivere uno script che si aggancia a una pagina e facilita il lavoro con la pagina. In questi casi non hai voglia di leggere l'effettiva (spesso minificata e talvolta offuscata) implementazione del codice su cui stai lavorando, vuoi solo simulare un'azione dell'utente.

Tutto questo riassume una cosa: lavorare contro l'interfaccia utente e non il codice di supporto. Quando vuoi fare un passo indietro e trattare l'interfaccia utente di una pagina per qualsiasi motivo (e queste sono di gran lunga le più comuni) - simulare un clic del mouse può essere molto utile.

    
risposta data 27.07.2013 - 16:58
fonte
1

e.initMouseEvent viene utilizzato da alcune librerie per simulare eventi di clic sui telefoni cellulari. Ciò consente la compatibilità del codice tra gli eventi click e touch.

Puoi controllare esempi in Ionic o Leaflet

    
risposta data 19.08.2014 - 18:15
fonte

Leggi altre domande sui tag