我为我的页面加载了以下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。
我做错了什么?
答案 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调试控制台