2009-07-30 17 views
32

Ho un collegamento che, quando si fa clic, vorrei spostare la posizione del mouse verso destra (o in qualsiasi punto all'interno del viewport, peraltro).jQuery Imposta la posizione del mouse (non la posizione del cursore)

nel codice sarebbe probabilmente simile al seguente:

$('a#expand').click(function(e){ 
    $(document) 
     .mouseXPos(e.pageX + 50) 
     .mouseYPos(e.pageY + 50); 
}); 

concatenamento potrebbe non essere necessario, naturalmente, ma una simile funzionalità 'posizione del mouse set' è quello che sono dopo.

Ho visto soluzioni per spostare la posizione del cursore in un determinato punto del testo, ma non ne ho ricavato molto.

+1

Sembra qualcosa che possa davvero irritare gli utenti! Spero che tu abbia una buona ragione per farlo, non che sia possibile. – ScottE

+0

Dovrei spiegare ulteriormente. Uso il fantastico plugin hoverIntent di Brian per jQuery, insieme a un menu che include una scheda collegata che espande il menu. Sto animando lo scorrimento, ma l'hoverIntent disattiva l'hover disattivato se il mouse rimane fermo mentre il menu è in animazione. Sembra strano, ma questo plugin cattura tutto il resto del mouseenter classico e lascia incorrere in disastri in cui gli sviluppatori si muovono normalmente. Conosce questo problema e ci sta lavorando per la prossima versione. Essere in grado di spostare in qualche modo il mouse su un pixel sarebbe fantastico. Sia la soluzione lato client o lato server sarebbe eccezionale. – Michael

+1

mentre suona a prima vista come qualcosa che irriterebbe gli utenti, permettimi di descrivere una situazione in cui _non_ spostare il mouse potrebbe irritare gli utenti e spostarli potrebbe davvero piacergli ... immagina di fare clic su qualcosa su una pagina web e gli elementi su la pagina si riorganizza; se il mouse non si è spostato, non sei più sopra l'elemento su cui hai fatto clic; il mouse non si è mosso rispetto alla pagina ma si è spostato _su rispetto al * contenuto *. "spostare" il mouse relativo alla pagina potrebbe essere richiesto per fornire l'esperienza che il mouse non ha spostato. –

risposta

53

Non esiste alcun meccanismo per spostare il mouse tramite JavaScript.

+0

Qualche meccanismo per ASP.Net, AJAX, jQuery, C#? So che la posizione del mouse può essere letta tramite jQuery, forse c'è un modo per esporlo tramite DOM? – Michael

+5

@ Michael: No, la posizione del mouse è di sola lettura per JavaScript. AJAX è solo un metodo di comunicazione per l'esecuzione di JavaScript sul client per parlare con un'applicazione server via HTTP. ASP.NET/C# è lato server e il suo ambito è limitato al server su cui viene eseguito. L'unico modo per controllare il mouse di un cliente è con un'applicazione client in esecuzione nello spazio utente che significa scaricarli e installarli. – MyItchyChin

+1

Anche se questa è una risposta piuttosto tardiva, grazie CptSkippy. Ho upvoted e contrassegnato come la risposta per il tuo commento alla mia domanda. – Michael

9

Potrei sbagliarmi, ma non penso sia possibile spostare il puntatore del mouse dallo script sul lato client. Dato il potenziale di abuso, spero certamente che non lo sia.

+0

Avevo sicuramente pensato alla preoccupazione per questo. Se mai dovessi incontrare un tale potere, sarò sicuro di trovare una soluzione e farti sapere. Sai di uno script sul lato server per fare questo? Grazie. – Michael

+0

@Michael: lo script sul lato server ha anche meno probabilità di spostare il puntatore del mouse del client. * Può * essere possibile spostare il puntatore del mouse tramite controllo ActiveX (solo Internet Explorer), plug-in personalizzato, controllo .NET o, eventualmente, applet Java firmato. –

4

Non è possibile eseguire la modifica della posizione del mouse tramite JavaScript o qualsiasi script lato client. L'unico motivo per questo non è quello di dare un potenziale script di abuso lato client come affermato in precedenza.

4

È possibile nascondere il cursore e mostrarne un altro in un altro luogo.

Buono da avere quando si muove in giro in un labirinto per esempio. Il cursore sembra fermato ma lo vedrai di nuovo quando ti sposti fuori dalla finestra.

+0

posso sapere come è possibile perché ho bisogno di implementarlo? – heyanshukla

+1

@heyanshukla Per nascondere [un cursore] (http://www.w3schools.com/cssref/pr_class_cursor.asp), è possibile utilizzare 'document.body.style.cursor = url ('empty.ico');' se hai qualche file icona vuoto. Oppure puoi impostare 'document.body.style.cursor = 'none';' ma funziona solo con Firefox. Ovviamente non è possibile personalizzare le coordinate del mouse, ma solo nascondere il cursore. – Stano

+0

@Satno, grazie per gli aggiornamenti. – heyanshukla

2

Come altri utenti hanno già menzionato, non esiste alcun meccanismo che Javascript lo faccia. Tuttavia, puoi disabilitare il mouse e implementare un cursore per fare ciò che ti serve. Ecco un link che spiega come. How to implement a custom cursor.