2010-08-29 8 views
9

De acuerdo, tengo este extraño problema en Firefox. Escribo en la consola de Firebug

$ == jQuery 

En algún momento se muestra cierto, y a veces falso. El archivo es solo un documento HTML vacío con una etiqueta de script que incluye jQuery. Actualizo la página, hago clic en "Ejecutar" en la consola y nuevamente, de vez en cuando, devuelve verdadero, ocasionalmente falso.

En las ocasiones en donde vuelve falsa, $.toString() da

function anonymous() { 
    return window.console.notifyFirebug(arguments, "$", "firebugExecuteCommand"); 
} 

Ahora aquí es lo raro. Cuando $ == jQuery da como falso el uso de la consola de Firebug, si voy a la barra de direcciones y escribo javascript:alert($ == jQuery);, ¡las alertas son verdaderas!

¿Alguien tiene alguna idea de lo que está pasando aquí? Es (ocasionalmente) arruinando mi depuración.

+0

Parece que Firebug usa el símbolo $ para algo. Solo un pensamiento, no estoy seguro de si eso es válido o no. –

+0

Podría ser 'noconflict' o algo así. Si intentas hacer '$ === jQuery' sin jQuery realmente cargado, obtendrás un error de referencia además de' false' –

+0

La línea de comando de Firebug enlaza '$' con [una función que llama a 'getElementById'] (http://fbug.googlecode.com/svn/trunk/content/firebug/commandLineAPI.js). No puedo pensar en una muy buena razón práctica que habría una confusión entre los dos, a menos que de alguna manera esté ejecutando el fragmento antes de que el script jQuery se cargue por completo (pero esto me parece poco probable). –

Respuesta

3

Hay una función nativa definida por firebug que asigna $ a getElementById. No creo que pueda resolver este "error" sin actualizar a una versión más nueva de Firebug que potencialmente eliminó el problema, o asignar manualmente $ = jQuery.

Probablemente se produzca como resultado de que jQuery ya se haya guardado en la memoria caché y el Firebug $ lo sobreescriba porque se dispara demasiado rápido, o viceversa ... solo un error extraño en cuanto a velocidad de asignación + almacenamiento en caché.

0

Quizás firebug está usando $ por algo y existe una condición de raza entre jquery y firebug para establecer esa variable, debes tener en cuenta que muchas bibliotecas javascript usan ese nombre de variable, si no estoy equivocado prototipo es uno de ellos

0

Debería estar usando instanceof en lugar de una comprobación de igualdad.

Por esta razón, es probable que Firebug haya definido $ en un ámbito local.

0

Puede haber muchas otras cosas usando $ como un símbolo de función/variable. jQuery es solo uno de ellos. Firebug probablemente está anulando $.

Cuestiones relacionadas