2009-10-20 45 views
17

Tengo las siguientes bibliotecas de Javascript cargadas para mi página.jQuery funciona en Firefox cuando Firebug se está ejecutando, no funciona cuando Firebug NO se está ejecutando

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js"></script> 
<script type="text/javascript" src="./js/jquery.scrollTo-min.js"></script> 

tengo el elemento div que quiero colocarlos en:

<div class="content" id="content"> 
</div> 

tengo este enlace:

<a id="changeText" href="rules.html">Click to change</a> 

Por último, tengo el siguiente código de jQuery:

<script> 

$(document).ready(function() { 
$("#changeText").click(function(){ 

    var url = $(this).attr("href"); 

    $("#content").load(url); 

    console.log(url); 

    $.scrollTo("0%", 400); 
}); 
}); 
</script> 

Todo esto funciona en Safar yo. La parte más extraña de la historia es que solo funciona en Firefox cuando Firebug está activado. Cuando Firebug NO está activado, la página parece estar cargada dinámicamente, pero luego la página carga rules.html y cambia a ella, que no es mi objetivo deseado.

Además, por supuesto, nada de esto funciona en IE8.

¿Qué estoy haciendo mal?

Respuesta

29

Será mejor que envuelve toda su

console.log(...) 

en

if (window.console) { 
    console.log(...); 
} 
+0

+1 Me gustó esta respuesta, ya que ofrecía una solución alternativa que permitiría que ambos escenarios funcionaran correctamente. –

+4

Hago algo similar donde tengo una función llamada log() que comprobará si window.console está disponible y, si es así, registre el comando. – Shard

+0

Me salvó el día. Está bien en Firefox 4.0, aunque :) –

11

Saque console.log, no está definido cuando firebug no está en ejecución.

+0

También necesitaba para agregar: return false; al final de mi función. De lo contrario, el navegador cargaría rules.html – Tylo

+0

Sí, el objeto de consola solo existe en Safari y Firefox cuando Firebug está activado. Necesita quitar la llamada de console.log. – ohdeargod

+0

Y, en términos más generales: busque en la Consola de errores para depurar problemas, le habría dicho que no había console.log(). – Nickolay

0

También hay proyecto interesante llamado fauxconsole: Simulación de un Firebug, Safari o Opera depuración de la consola de Microsoft Internet Explorer con la falsa consola

1

Comprueba si tienes una consola antes de intentar usarla.

Enlazar una variable booleana así:

var hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined'); 

y comprobar que antes de escribir en la consola:

if (hasConsole) { 
     console.log("This is safe."); 
    } 

De esta manera cuando se enciende el Firebug a escribir sus mensajes de depuración y cuando se enciende tus scripts aún funcionan.

1

Puede usar el siguiente código para enmascarar las funciones de registro faltantes.

if (typeof console === "undefined") { 
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 

    window.console = {}; 
    for (var i = 0; i < names.length; ++i) 
     window.console[names[i]] = function() {} 
} 
Cuestiones relacionadas