2011-03-14 12 views
10

Deseo código JavaScript para detectar el tipo de cursor.detectar cursor tipo

Por ejemplo al colocar el cursor en el área de texto que cambia de forma predeterminada al texto ..

+2

Intentando detectar el tipo de cursor actual, o simplemente configurarlo usted mismo? Si estaba tratando de configurarlo, hay una serie de otras preguntas que son duplicados y esto se cerrará. (Si yo fuera tú, cambiaría la intención de la pregunta para que se pueda detectar el tipo de cursor actual, por lo que no es más que otro duplicado al configurar el tipo de cursor, pero la decisión depende completamente de ti :) –

+0

pero no lo hago Quiero establecer el tipo, pero lo obtengo en cualquier lugar de la página. – mkotwd

+1

Cuéntanos por qué quieres hacer esto. Supongo que hay un camino más fácil hacia su solución. FWIW, el cursor no es parte del DOM, por lo que no podrás obtener mucha información de él. Lo mejor que puedes hacer es descubrir su posición y hacer suposiciones a partir de eso. –

Respuesta

0

creo que se puede leer la propiedad css cursor al igual que se puede establecer, pero hay que hacerlo desde un elemento específico porque AFAIK no hay forma de leer el tipo de cursor desde la ventana o el objeto del documento. Siguiendo esta lógica, para obtener el tipo de cursor actual, debe encontrar el elemento actual sobre el que se encuentra el mouse y leer su cursor css. Sin embargo, debería comprobar constantemente si el cursor cambió, lo cual es lento y propenso a errores (por regla general, casi siempre debe tratar de poner su código en un controlador de eventos para reaccionar ante algo en lugar de verificar constantemente si Sucedió aún y poner su código en esa función es más lógico, eficiente, robusto y claro.

Pero la idea de detectar el tipo de cursor todavía me fascina, y si alguien sabe cómo me gustaría saber acerca de eso. : D


Como una solución alternativa, en lugar de leer el tipo de cursor, ¿por qué no acaba de configurar un controlador de eventos para cuando entra un elemento que cambiarlo? Esto sería mucho menos propenso a errores y probablemente más directo, porque no creo que le importe tanto el cursor, pero si el mouse ha ingresado un elemento específico.

$("#textbox").mouseover(function() { 
    //I know the cursor has changed because it is now in a textbox 
}); 
+0

pero si no se establece ninguna regla, ¿qué puedo hacer? – mkotwd

+0

@mkotwd si no se establece una regla css, será el cursor estándar - para los cuadros de texto esto es 'cursor: text;' – Christoph

3

usted puede hacer esto, pero no es bastante, y probablemente será bastante lento dependiendo del número de elementos que tiene en su página.

$('*').mouseenter(function(){ 
    var currentCursor = $(this).css('cursor') ; 

    //do what you want here, i.e. 
    console.log(currentCursor); 
}); 
1

que tienen un buen perfecta jQuery extensión para este tipo de cosas en este GIST:

https://gist.github.com/2206057

Para usarlo simplemente hacer algo como:

$("#eleID").cursor(); // will return current cursor state for that element 
$("#eleID").cursor("pointer"); // will change ele cursor to whatever is "" 
$("#eleID").cursor("clear"); // will change ele cursor to default 
$("#eleID").cursor("ishover"); // will return boolean of if mouse is over element or not 
$("#eleID").cursor("position"); // will return cursor's current position in "relation" to element 

también

$.cursor("wait") // will change document cursor to whatever is "" 
$.cursor($("#eleID"), "wait"); // same as $("#eleID").cursor("wait"); 
$.cursor("position") // will return current cursor position 

que mencionar también, si presenta múltiples elementos como $("#eleID1, .elementsWiththisClass") de "posición" y "isHover", entonces devolverá un Array objetos que contienen como:

var poses = $("#eleID1, .elementsWiththisClass").cursor("position") // will equal 
poses[0] = { 
    ele: e.fn.e.init[1], // the jquery element 
    x: XXX, // where XXX is the cursors current position in relation to element 
    y: XXX 
} 
poses[1] = { // ...and so on and so forth for each element 
3

puede detectar el tipo de cursor utilizando JavaScript

como

<input id="sample_text" name="one" type="text" value="Sample Text" /> 

y el código JavaScript debe ser algo como esto

$('input[id=sample_text]').click(function() { 
    alert("test"); 
    var ctl = document.getElementById('sample_text'); 
    var startPos = ctl.selectionStart; 
    var endPos = ctl.selectionEnd; 
    alert(startPos + ", " + endPos); 
}); 

también se puede ver en este Jsfiddle for Js Cursor Detection

lo anterior se escribe el código jQuery, también se puede utilizar la vainilla JS para que usted sólo tiene que cambiarlo a

<input id="sample_text" name="one" type="text" value="Sample Text" onclick="detect_cursor()" /> 

y JavaScript debería ser algo como esto

function detect_cursor() { 
    alert("test"); 
    var ctl = document.getElementById('sample_text'); 
    var startPos = ctl.selectionStart; 
    var endPos = ctl.selectionEnd; 
    alert(startPos + ", " + endPos); 
}; 
+2

Eso es para el cursor del teclado. El OP pregunta por el cursor * mouse *. –

Cuestiones relacionadas