2009-06-22 10 views
19

¿Hay alguna manera de desactivar la información sobre herramientas del navegador para que se muestre al pasar el ratón sobre elementos que tienen el atributo 'título' rellenado? Tenga en cuenta que no quiero eliminar el contenido del título. Aquí se Se solicita el código:Cómo deshabilitar la información sobre herramientas en el navegador con jQuery?

$(document).ready(function() { 
    $('a.clickableSticky').cluetip({ 
     splitTitle: '|', 
     showTitle: false, 
     titleAttribute: 'description', 
     activation: 'click', 
     sticky: true, 
     arrows: true, 
     closePosition: 'title' 
    }); 
}); 

y en asp.net

<ItemTemplate> 
    <a class="clickableSticky" href="#" 
    title=' <%#((Limit)Container.DataItem).Tip %>'> 
    <img src="..\App_Themes\default\images\icons\information.png"/> 
    </a> 

</ItemTemplate> 
+0

Puede actualizar su pregunta original para indicar que no necesita publicarla como comentario :) – Sampson

+0

¿Qué navegador muestra la información sobre herramientas del navegador antes de que inicie Cluetip? Lo probé en Safari, Chrome, IE8 (y 7 compat.), Firefox y Opera, y ninguno tuvo ningún problema que pudiera notar. –

+0

¿tiene un enlace a cualquiera de su código? –

Respuesta

3

Se puede usar jQuery para eliminar el contenido de la attribte título, o moverlo a algún otro parámetro para su uso posterior .

Esto significa que usted pierde algo de accesibilidad.

RE: ClueTip Una búsqueda de Google parece sugerir que este es un problema común, ¿esto solo ocurre en IE? ClueTip parece funcionar como se esperaba en Firefox.

+0

No quiero eliminar el atributo de título. Estoy usando el complemento 'Cluetip', y necesito el atributo de título. El problema es que esa fea herramienta de color amarillo aparece por un segundo, antes de que aparezca la pista de clics. – epitka

+3

@epitka - Podrías haber mencionado eso en cuestión. – karim79

+0

Lo siento, después de publicarlo lo noté y lo revisé – epitka

49

Puede quitar el atributo title en la carga de la página.

$(document).ready(function() { 
    $('[title]').removeAttr('title'); 
}); 

Si necesita utilizar el título más adelante, se puede almacenar en jQuery data() del elemento.

$(document).ready(function() { 
    $('[title]').each(function() { 
     $this = $(this); 
     $.data(this, 'title', $this.attr('title')); 
     $this.removeAttr('title'); 
    }); 
}); 

Otra opción es cambiar el nombre del atributo title a aTitle, o alguna otra cosa que el navegador ignoraría, y luego actualizar ninguna JavaScript para leer el nuevo nombre de atributo en lugar de title.

Actualización:

Una idea interesante que podría utilizar es el de "pereza" quitar el título cuando se cierne sobre un elemento. Cuando el usuario se queda fuera del elemento, puede devolver el valor del título.

Esto no es tan sencillo como debería ser porque IE no elimina correctamente la información sobre herramientas en el evento de desplazamiento si establece el atributo de título en null o elimina el atributo de título. Sin embargo, si establece la información sobre herramientas en una cadena vacía ("") al desplazarse, eliminará la información sobre herramientas de todos los navegadores, incluido Internet Explorer.

Puede usar el método que mencioné anteriormente para almacenar el atributo de título en el método data(...) de jQuery y luego ponerlo nuevamente en mouseout.

$(document).ready(function() { 
    $('[title]').mouseover(function() { 
     $this = $(this); 
     $this.data('title', $this.attr('title')); 
     // Using null here wouldn't work in IE, but empty string will work just fine. 
     $this.attr('title', ''); 
    }).mouseout(function() { 
     $this = $(this); 
     $this.attr('title', $this.data('title')); 
    }); 
}); 
+0

Fragmento genial, realmente no pensé en cómo lo habría hecho, pero me gusta la facilidad de este enfoque –

+1

+1 para el ejemplo de código :) –

+0

Eso es lo que estoy haciendo actualmente, almacenando en el campo de descripción, pero pensé que podría tenerlo en el título e ignorarlo – epitka

1

Hack up ClueTip para utilizar un atributo de título renombrado.

8

Aquí está la moderna manera jQuery para hacerlo (OMI) ...

$('[title]').attr('title', function(i, title) { 
    $(this).data('title', title).removeAttr('title'); 
}); 

... y, por supuesto, la lectura de la title atribuyen vuelta se hace con ...

$('#whatever').data('title'); 
6

Siguiendo la sugerencia de Dan Herbert anteriormente, aquí está el código:

$(element).hover(
    function() { 
     $(this).data('title', $(this).attr('title')); 
     $(this).removeAttr('title'); 
    }, 
    function() { 
     $(this).attr('title', $(this).data('title')); 
    }); 
3
function hideTips(event) { 
    var saveAlt = $(this).attr('alt'); 
    var saveTitle = $(this).attr('title'); 
    if (event.type == 'mouseenter') { 
     $(this).attr('title',''); 
     $(this).attr('alt',''); 
    } else { 
     if (event.type == 'mouseleave'){ 
      $(this).attr('alt',saveAlt); 
      $(this).attr('title',saveTitle); 
     } 
    } 
} 

$(document).ready(function(){ 
$("a").live("hover", hideTips); 
}); 

Hola a todos. Estoy usando esta solución y funciona bien en todos los navegadores.

0

Como necesito que esta funcionalidad esté disponible durante otra acción (como la pantalla de copia o escoger color,) mi solución contiene dos funciones que se llamará cuando esa acción comienza y cuando termina:

$.removeTitles = function() { 
    $('[title]').bind('mousemove.hideTooltips', function() { 
    $this = $(this); 
    if($this.attr('title') && $this.attr('title') != '') { 
     $this.data('title', $this.attr('title')).attr('title', ''); 
    } 
    }).bind('mouseout.hideTooltips', function() { 
    $this = $(this); 
    $this.attr('title', $this.data('title')); 
    }); 
} 

$.restoreTitles = function() { 
    $('[title]').unbind('mousemove.hideTooltips').unbind('mouseout.hideTooltips'); 
    $('*[data-title!=undefined]').attr('title', $this.data('title')); 
} 

MouseEnter no puede ser utilizado porque otros elementos pueden colocarse sobre el elemento titulado (como una imagen en un título div) y que mouseOut ocurrirá tan pronto como desplace el cursor sobre el elemento interno (la imagen!)

Sin embargo, al utilizar mouseMove usted debería prestar atención porque el evento se dispara varias veces. Para evitar borrar los datos guardados, primero verifique que el título no esté vacío.

La última línea en EliminarTítulos, intenta restaurar el título del elemento desde el que el mouse no salió al llamar al final en mouseClick o en una tecla de método abreviado.

Cuestiones relacionadas