Javascript 当Firebug运行时,jQuery在Firefox中工作,当Firebug未运行时不工作
我已经为我的页面加载了以下Javascript库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
<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() {}
}