Amazon.com ha actualizado recientemente su javascript y está causando problemas con algunos navegadores Opera.¿Cuál es la forma correcta de detectar Opera usando jQuery?
Su código de detección del navegador se parece así, pero es defectuosa:
function sitbReaderIsCompatibleBrowser() {
if (typeof(jQuery) == 'undefined') {
return false;
} else {
var version = jQuery.browser.version || "0";
var splitVersion = version.split('.');
return (
(jQuery.browser.msie && splitVersion[0] >= 6) // IE 6 and higher
|| (jQuery.browser.mozilla && (
(splitVersion[0] == 1 && splitVersion[1] >= 8) // Firefox 2 and higher
|| (splitVersion[0] >= 2)
))
|| (jQuery.browser.safari && splitVersion[0] >= 500) // Safari 5 and higher
|| (jQuery.browser.opera && splitVersion[0] >= 9) // Opera 5 and higher
);
}
}
Nada obviamente equivocada salta a mí con este código, pero nunca he utilizado jQuery antes, así que no sé .
Aunque parece que este código intenta dejar pasar a los usuarios de Opera, cuando visito la página con Opera 9.64 recibo un mensaje de "navegador no compatible". Si cambio la configuración de Opera para que se informe como Firefox, ¡la página funciona a la perfección! Con eso en mente, estoy bastante seguro de que es un problema con el script y no con el navegador.
¿Algún experto de jQuery tiene alguna sugerencia?
Puede replicar el comportamiento visitando cualquier libro en Amazon y haciendo clic en el enlace "mirar dentro de este libro".
estoy usando Opera 9.64 también, pero todo lo que la página me está diciendo es que Amazon línea del lector funciona mejor con IE> 6.0, Firefox> 1.5 o Safari> 2,0 –
Un buen ejemplo de por qué la detección del navegador y mensajes "navegador no compatible" casi siempre son una mala idea. – tgecho
Bueno, * este * fragmento de sniffing específico intenta de hecho permitir Opera, pero como una de las respuestas a continuación dice que Amazon tiene más explorador olfateando en otro lado, incluido el rastreo del lado del servidor, no es compatible con Opera. – hallvors