Ответ 1
Вам лучше обернуть все ваши
console.log(...)
в
if (window.console) {
console.log(...);
}
У меня есть следующие библиотеки 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. Самая странная часть истории - то, что она работает только в Firefox, когда включен Firebug. Когда Firebug НЕ включен, страница выглядит динамически загруженной, но затем страница загружает rules.html и переключается на нее, что не является моей желаемой целью.
Кроме того, конечно, ничего не работает в IE8.
Что я делаю неправильно?
Вам лучше обернуть все ваши
console.log(...)
в
if (window.console) {
console.log(...);
}
Выньте console.log, это undefined, когда firebug не запущен.
Убедитесь, что у вас есть консоль, прежде чем пытаться ее использовать.
Связывает логическую переменную так:
var hasConsole = (typeof console != 'undefined' && typeof console.log != 'undefined');
И проверьте его перед записью на консоль:
if (hasConsole) {
console.log("This is safe.");
}
Таким образом, когда вы включаете 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() {}
}
Также есть интересный проект под названием fauxconsole: Имитация консоли отладки Firebug, Safari или Opera в Microsoft Internet Explorer с помощью Faux Console