У меня возникла ситуация, совершенно невозможная, по моему пониманию. Описал её на форуме Mozilla Add-ons, но спрошу ещё и тут.
Есть два скрипта. Один -- главный, а другой для диалога опций.
Первый создаёт глобальный объект с именем "nextplease". Судя по всему, работает правильно. Ошибок в консоли не пояляется, "alert(typeOf(nextplease))" в Execute JS выдаёт "object". Все кнопки и клавиши работают как надо и т.д.
Беда в том, что второй скрипт его в упор не видит. Сейчас там стоит:
Насколько я понимаю,
Так вот, при открытии диалога я вижу alert с "undefined". А "nextplease is undefined!" не вижу; вместо него в консоли появляются ошибки:
Наконец, если я выполняю
Есть ли у кого-нибудь объяснение этим фактам и/или идеи, что с этим можно сделать?
Есть два скрипта. Один -- главный, а другой для диалога опций.
Первый создаёт глобальный объект с именем "nextplease". Судя по всему, работает правильно. Ошибок в консоли не пояляется, "alert(typeOf(nextplease))" в Execute JS выдаёт "object". Все кнопки и клавиши работают как надо и т.д.
Беда в том, что второй скрипт его в упор не видит. Сейчас там стоит:
// $Id: nextpleaseOptions.js,v 1.16 2007/07/21 00:15:11 howie Exp $
alert(typeof(nextplease));
if (nextplease === undefined) {alert("nextplease is undefined!");}
if (nextplease && nextplease.DEBUG) {alert("nextplease is defined");}
Насколько я понимаю,
nextplease === undefined
-- правильный способ проверки на undefined; по крайней мере, в книге Крокфорда сказано именно так.Так вот, при открытии диалога я вижу alert с "undefined". А "nextplease is undefined!" не вижу; вместо него в консоли появляются ошибки:
Error: nextplease is not defined
Source file: chrome://nextplease/content/nextpleaseOptions.js
Line: 5
Error: nextplease is not defined
Source file: chrome://nextplease/content/nextpleaseOptions.xul
Line: 1
Наконец, если я выполняю
typeof(nextplease)
и nextplease === undefined
в консоли, а не в Execute JS, то я получаю undefined
и Error: nextplease is not defined
соответственно.Есть ли у кого-нибудь объяснение этим фактам и/или идеи, что с этим можно сделать?