Подтвердить что ты не робот

JQuery работает в Firefox, когда Firebug запущен, не работает, когда 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. Самая странная часть истории - то, что она работает только в Firefox, когда включен Firebug. Когда Firebug НЕ включен, страница выглядит динамически загруженной, но затем страница загружает rules.html и переключается на нее, что не является моей желаемой целью.

Кроме того, конечно, ничего не работает в IE8.

Что я делаю неправильно?

4b9b3361

Ответ 1

Вам лучше обернуть все ваши

console.log(...) 

в

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

Ответ 2

Выньте console.log, это undefined, когда firebug не запущен.

Ответ 3

Убедитесь, что у вас есть консоль, прежде чем пытаться ее использовать.

Связывает логическую переменную так:

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

И проверьте его перед записью на консоль:

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

Таким образом, когда вы включаете Firebug, вы получаете сообщения об отладке, и когда вы его отключите, ваши скрипты все еще работают.

Ответ 4

Вы можете использовать следующий код для маскировки отсутствующих функций ведения журнала.

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

Ответ 5

Также есть интересный проект под названием fauxconsole: Имитация консоли отладки Firebug, Safari или Opera в Microsoft Internet Explorer с помощью Faux Console