Xpoint
   [напомнить пароль]

Помогите с расширением для FF. Вроде все правильно, а не работает

Метки: [без меток]
2008-05-24 03:08:01 [обр] Vladimir[досье]
сообщение промодерировано

Вот текст расширения

<?xml version="1.0"?>
<overlay id="sample" 
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<browser type="content-primary"/> 
<script type="application/x-javascript">
<![CDATA[
function repl() {
  var s=content.documentюgetElementsByTagName("script");
  for (i=0;i<s.length;++i) {
    node=s[i];
    t=node.text;
    делаем в t (т.е. в тексте скрипта) нужные изменения
    node.text=t;
    node.parentNode.replaceChild(node);
  }
}   
window.addEventListener("load", repl, true);
]]>
</script>
 <statusbar id="status-bar">
  <statusbarpanel id="my-panel" label="Sample extension work."/>
 </statusbar>
</overlay>

Т.е. это расширение должно после загрузки страницы в браузер сделать изменения в скриптах на странице и, по идее, браузер должен работать с измененной страницей. Однако, браузер работает с исходной страницей как-будто никаких изменений и не было, хотя инспектор DOM показывает измененные скрипты.

Не могу понять в чем проблема. Почему браузе работает с первоначально загруженным вариантом?
Подскажите, плиз! В чем может быть причина?

спустя 17 дней [обр] Владимир Палант(434/4445)[досье]
К тому времени, как вы измените скрипты, эти скрипты уже откомпилируются и их функции будут загружены в объект window. Хотите изменить — меняйте непосредственно функции. Вот только не надо менять текст, он ведь может от одной версии браузера к другой меняться, вы запросто чего-нибудь испортите. Вот так можно к примеру "расширить" функцию getBrowser:
function repl() {
  var oldGetBrowser = window.getBrowser; // сохраняем старую функцию
  window.getBrowser = function() {       // заменяем на свою функцию
    // делаем что-то перед вызовом oldGetBrowser
    var ret = oldGetBrowser.apply(this, arguments);  // вызываем старую функцию
    // делаем что-то после вызовом oldGetBrowser
    return ret;
  }
}
Powered by POEM™ Engine Copyright © 2002-2005