Javascript 当Firebug运行时,jQuery在Firefox中工作,当Firebug未运行时不工作

Javascript 当Firebug运行时,jQuery在Firefox中工作,当Firebug未运行时不工作,javascript,jquery,firefox,firebug,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"></s

我已经为我的页面加载了以下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>

$(文档).ready(函数(){
$(“#changeText”)。单击(函数(){
var url=$(this.attr(“href”);
$(“#内容”).load(url);
console.log(url);
$.scrollTo(“0%”,400);
});
});
这一切都适用于Safari。最奇怪的是,它只在Firefox上启用Firebug时才起作用。当Firebug未启用时,页面似乎是动态加载的,但随后页面加载rules.html并切换到它,这不是我想要的目标

当然,这些在IE8中都不起作用


我做错了什么?

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

您最好将所有的

console.log(...) 
进入


还有一个有趣的项目叫做:在MicrosoftInternetExplorer中用人造控制台模拟Firebug、Safari或Opera调试控制台,在尝试使用控制台之前检查一下是否有控制台

绑定布尔变量,以便:

var hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined');
并在写入控制台之前进行检查:

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

这样,当您打开Firebug时,您会收到调试消息,当您关闭Firebug时,您的脚本仍然可以工作。

您可以使用以下代码来屏蔽丢失的日志功能

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() {}
}
if(控制台类型==“未定义”){
变量名称=[“日志”、“调试”、“信息”、“警告”、“错误”、“断言”、“目录”、“dirxml”,
“组”、“组结束”、“时间”、“时间结束”、“计数”、“跟踪”、“配置文件”、“配置文件结束”];
window.console={};
对于(变量i=0;i
我还需要添加:return false;在我的功能结束时。否则浏览器将加载rules.htmlYeah,控制台对象仅在Firebug打开时存在于Safari和Firefox中。您需要去掉console.log调用。更一般地说:查看错误控制台以调试问题,它会告诉您没有console.log()。如果您查看错误控制台,这不会自动使console.log工作吗?不。“错误控制台”指的是Firefox中内置的错误控制台。它不是Firebug的等价物。您可以在Firefox中按
Ctrl+Shift+J
Tools>Error Console
来找到它。+1我喜欢这个答案,因为它提供了一个解决方案,可以让这两种情况正常运行。我做了一些类似的事情,我有一个名为log()的函数这将检查window.console是否可用,如果可用,则记录命令。不过在Firefox4.0上也可以:)
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() {}
}