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

FireBug Lite messageQueue null

Я пытаюсь заставить FireBug Lite работать с IE7. Учитывая этот код (и ничего больше):

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
<link rel="stylesheet" href="../../css/third-party/jquery.ui.all.css">
This is a test!

... Я получаю сообщение об ошибке в строке: 8180, 'this.messageQueue является нулевым или не является объектом', и консоль не появляется.

Если я удалю ссылку на файл CSS, он отлично работает. Кроме того, этот CSS отлично работает с FireBug под FF и GC.

Файл CSS - это недавняя загрузка с веб-сайта jQ и содержит не более 8000 строк (после расширения всех @imports), а также никакой код, доступный для моего веб-сервера, не содержит токен messageQueue.

У меня нет плагинов IE (что я знаю) и никогда не использовали какие-либо продукты MSMQ на этом ПК.

Я также пробовал случайные вещи, такие как переключение порядка инструкций, загрузка jQuery регулярных .js файлов, использование закладки-ярлыка FireBug и т.д., все это безрезультатно.

Любые советы?

4b9b3361

Ответ 1

Это известная ошибка, которая влияет на IE7 (и IE8) и отслеживается в отслеживании проблем с firebug.

Это все еще проблема на всех каналах (Firebug 1.4 stable/debug/beta/developer).

Отказ от ответственности:. Если вы собираетесь использовать эти методы, подпишитесь на обсуждение этой ошибки и убедитесь, что вы прекратили использовать этот надуманный либо когда он исправлен, либо вышел Firebug 1.5.

Если вам нужно использовать firebug сейчас, вы можете использовать firebug 1.3. Этот метод я нигде не могу найти документально...

<script type="text/javascript"
    src="https://getfirebug.com/releases/lite/1.3/firebug-lite.js"></script>

Лучшим подходом было бы использование Firebug 1.3 в качестве букмарклета. Я взломал этот URL-адрес букмарклета на основе архива выпусков firebug:

javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','3','releases/lite/1.3/firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');

Просто выгрузите его в свою панель ссылок, используя приведенное выше в поле URL.

Ответ 2

Одна из возможных причин: если нет таблиц стилей или данных стиля CSS. Не знаю, почему.

Если CSS отсутствует, и вы видите эту ошибку, добавьте некоторые, и Firebug Lite может снова работать.


Например, этот JSbin с правилом CSS-токена работает с Firebug Lite в IE8:

http://jsbin.com/etecub/5/

Код: http://jsbin.com/etecub/5/edit


Этот JSbin, идентичный, но без правил CSS, не удается загружать Firebug Lite в IE8 с ошибкой 'this.messageQueue' is null or not an object:

http://jsbin.com/etecub/6/

Код: http://jsbin.com/etecub/6/edit


Похоже, не имеет значения, действительно ли правило применяется или нет (например, http://jsbin.com/etecub/9 отлично работает). Если у вас есть прикрепленная табличка стилей и все равно видите эту ошибку, и выше не работает, возможно, попробуйте добавить блок <style> к документу с помощью правила CSS или двух.

Ответ 3

У меня была такая же проблема с Firebug Lite, которая не открывалась с моим приложением Meteor.

После прочтения обсуждений в bugtracker я попробовал debug-версию, которая в основном представляет собой только несжатую версию библиотеки. И да, это имело значение, и Firebug Lite теперь запускается как в Chrome, так и в Safari.

Тег, который я использую прямо сейчас:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

Ответ 4

Просто увидел ответ, который помог мне отсюда: https://github.com/angular/angular.js/issues/3596. Сам отчет об ошибке находится в репозитории проекта Angular, но он не имеет ничего общего с Angular - проблема для меня проявилась на странице ванили HTML/CSS/JS, а исправлено и работало там.

Цитата оттуда:

firebug-lite-beta.js: 30905 Uncaught TypeError: невозможно прочитать свойство "push" из undefined

Добавление базовой нулевой проверки:

if (typeof this.messageQueue == 'undefined') {

        this.messageQueue = [];

}

Кажется, это решение проблемы.