¿Extracción incorrecta de .attr (“href”) en IE7 frente a todos los demás navegadores?

¿Es realmente cierto que el comando attr("href") para un enlace se maneja de forma muy diferente en IE7 en comparación con todos los demás navegadores?

Digamos que tengo una página en http://example.com/page.html y tengo este HTML:

 Link text 

y esto jQuery:

 var strHref = $(".lnkTest").attr("href"); 

Luego, en IE7, el valor de la variable strHref será "http://example.com/page.htm#someAnchor" pero en otros navegadores será "#someAnchor" .

Creo que el último caso mencionado es el más correcto, ¿es solo un caso de IE7 siendo un chico malo o es un error en jQuery?

Ciertamente no es un error en jQuery, sino implementaciones inconsistentes de los navegadores de .getAttribute('href') . Sugiero usar solo .get(0).href para la coherencia.

Parece que puede acceder al texto del atributo en IE y Mozilla usando .get(0).getAttribute('href', 2) si no desea el URI absoluto. Sin embargo, tenga en cuenta que esto no funcionará en Opera y no lo he probado en Safari / Chrome / cualquier otra cosa.

También podría quitar el dominio o dividir en ‘#’ para .get(0).href y usar la segunda parte del array suponiendo que incluso contenga ‘#’ (verificar .length ).

http://www.glennjones.net/Post/809/getAttributehrefbug.htm

Creo que está implementado así en todos los IE 7+.

Yo suelo:

 var href=jQuery('#foo').attr('href'); href=href.substring(href.indexOf('#')); 

¡Espero eso ayude! Aclamaciones.

Encontré un error relacionado con este problema: http://bugs.jquery.com/ticket/2747 jQuery implementó una solución para el IE7 ‘error’. Sin embargo, en jQuery 1.7.1, este error se reintrodujo. Creé un nuevo error para 1.7.1: http://bugs.jquery.com/ticket/11129

Yo suelo:

 var hrefArr = $(this).attr('href').split('/'); var id = hrefArr[hrefArr.length-1]; 

cuando lo necesito todo después del último “/”.

Otra forma es simplemente usar un atributo de datos, en lugar de href

 example 

.

 var href = $(this).attr('data-href'); 

Terminé creando una variable a través de PHP, luego usé el método javascript replace () para quitarlo del href:

   

El problema es que IE7 e IE8 cambian también el texto. Entonces, una buena solución es hacer esto

 $('#linkId').attr('href','newlink').text('oldtext'); 
Intereting Posts