当Firebug运行时,jQuery在Firefox中运行,当Firebug未运行时不起作用

时间:2009-10-20 19:37:27

标签: javascript jquery firefox firebug

我为我的页面加载了以下Javascript库。

<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>

我有div元素,我想把它们放在:

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

我有这个链接:

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

最后,我有以下jQuery代码:

<script>

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

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

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

  console.log(url);

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

这一切都适用于Safari。这个故事中最奇怪的部分是它只能在Firebug启动时在Firefox中运行。当Firebug未启用时,页面似乎是动态加载的,但页面会加载rules.html并切换到它,这不是我想要的目标。

当然,这一切都不适用于IE8。

我做错了什么?

5 个答案:

答案 0 :(得分:29)

你最好把所有的

包起来
console.log(...) 

进入

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

答案 1 :(得分:11)

取出console.log,当firebug没有运行时,它是未定义的。

答案 2 :(得分:1)

在尝试使用控制台之前,请检查是否有控制台。

绑定一个布尔变量:

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

在写入控制台之前检查它:

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

这样,当你打开Firebug时,你会收到调试消息,当你关闭它时,你的脚本仍然有效。

答案 3 :(得分:1)

您可以使用以下代码来屏蔽缺少的日志记录功能。

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() {}
}

答案 4 :(得分:0)

还有一个名为fauxconsole的有趣项目:使用Faux Console在Microsoft Internet Explorer中模拟Firebug,Safari或Opera调试控制台