Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > странности с undefined в расширении FireFox


Автор: Astraller 15.6.2009, 10:30
Суть в том что есть конструкция:
Код

links = document.getElementsByTagName('a');
for(i=0;links[i];i++){
  if (links[i].onclick){
    // Обработка
  }
}

Если исполнить его через псевдопротокол javascript: в строке адреса нужного сайта, все работает. Но если упаковать в файл и запустить из меню FF, непример так:
Код

 <menu id="edit-menu">
  <menupopup id="menu_EditPopup">
    <menuitem id="my-item" label="1" oncommand="start()"/>
  </menupopup>
 </menu>

Код

links = content.document.getElementsByTagName('a');
for(i=0;links[i];i++){
  if (links[i].onclick){
    // Обработка
  }
}

То оно падает на конструкции:
Код

if (links[i].onclick){...

по такой ошибке:
Component is not available" nsresult: "0x80040111 . ... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location:...

Так же пробовал сделать конструкцию определения undefined:
Код

if(typeof(eval(content.document)[as[n].onclick] != "undefined"){...


Но это не помогло...

Кто что подскажет? smile

Автор: Veve 15.6.2009, 10:40
Вот это для меня немного странно выглядит, может в этом причина? 
Код

for(i=0;links[i];i++)


links[i] ?

Автор: Astraller 15.6.2009, 10:43
Цитата(Veve @  15.6.2009,  10:40 Найти цитируемый пост)
Вот это для меня немного странно выглядит, может в этом причина? 

А вот это как раз работает smile Т.е.:
Код

links = content.document.getElementsByTagName('a');
for(i=0;links[i];i++){
  alert(links[i].href);
}

работает нормально...

Автор: Astraller 15.6.2009, 15:04
Я был большой дурак, все проще, конструкция:
Код

links[i].getAttribute("onclick")

отлично работает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)