Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№20124-04-2009 18:12:04

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

alert($('wearherIfr').scrollTo); выдает undefined

Это метод окна, а не iframe, соответственно iframe. contentWindow. scrollTo
Кстати, если верить http://www.xulplanet.com/references/xpcomref/ifaces/nsIDOMNSHTMLElement.html у DOM-элементов есть метод scrollIntoView - наверное, можно просто найти этот элемент в документе iframe и позвать этот метод.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№20201-06-2009 14:04:41

dima9111
Участник
 
Группа: Members
Зарегистрирован: 01-06-2009
Сообщений: 12
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Добрый день ! Хочу сделать плагин который будет собирать статистику по активности браузера на основе движка cnstat (думаю всем известный движок). В плагин требуется установить код который предоставляет cnstat
<!-- CNStats begin -->
<span id="cnstats_span"><script type="text/javascript">
cnsd=document;
cnst=escape(cnsd.title);
cnst=cnst.replace(/\+/g,'%2B');
cnsa=navigator.appName;
cnsn=(cnsa.substring(0,2)=='Mi')?0:1;
cnss=screen;cnspx=(cnsn==0)?cnss.colorDepth:cnss.pixelDepth;
if (cnsd.getElementById)
{
    var i=cnsd.createElement('img');
    var amp=String.fromCharCode(38);
    var iurl='http://stat/cnt-gif1x1.php?';
    iurl+='e='+cnss.width+'.'+cnss.height;
    iurl+=amp+'d='+cnspx+amp+'r='+escape(cnsd.referrer);
    iurl+=amp+'p='+escape(cnsd.location)+amp+'t='+cnst;
    i.src=iurl;
    i.width=1;i.height=1;i.border=0;
    cnsd.getElementById('cnstats_span').appendChild(i);
}
</script></span><noscript><img src="http://stat/cnt-gif1x1.php?468&amp;c=0" width="1" height="1" border="0" alt="" /></noscript>
<!-- CNStats end -->
Нужно чтоб скрипт срабатывал каждый раз как произойдет DOMContentLoaded. Не соображу как это сделать. Либо подключать в плагин удаленный html который будет лежать на сервере, либо как то это код внедрить в плагин....... оч буду благодарен за помощь.
Желательно решение с использованием события DOMContentLoaded

Отредактировано dima9111 (03-06-2009 12:18:34)

Отсутствует

 

№20302-06-2009 11:51:23

dima9111
Участник
 
Группа: Members
Зарегистрирован: 01-06-2009
Сообщений: 12
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Ещё вопрос по теме, если я установил Greasemonkey. Под него можно запустить любой яваскрипт можно ли конвртировать Greasemonkey в независимый плагин?

Отсутствует

 

№20402-06-2009 12:31:05

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

dima9111

dima9111 пишет

можно ли конвртировать Greasemonkey в независимый плагин?

В смысле? А сейчас он какой?
Или речь про написанный в нём скрипт?


---  ---

Отсутствует

 

№20502-06-2009 14:00:11

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

dima9111, можно попробовать http://arantius.com/misc/greasemonkey/script-compiler

Отсутствует

 

№20603-06-2009 12:28:26

dima9111
Участник
 
Группа: Members
Зарегистрирован: 01-06-2009
Сообщений: 12
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Crazy-EyE пишет

dima9111, можно попробовать http://arantius.com/misc/greasemonkey/script-compiler

Дружище выручил!!!! Респект и уважуха!!!

Отсутствует

 

№20725-06-2009 00:34:08

dima9111
Участник
 
Группа: Members
Зарегистрирован: 01-06-2009
Сообщений: 12
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Каким способом лучше добавть ява код от гугл аналитик в firefox
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9464160-1");
pageTracker._trackPageview();
} catch(err) {}</script>
п?

Отсутствует

 

№20824-11-2009 17:20:42

Claire
Участник
 
Группа: Members
Зарегистрирован: 23-11-2009
Сообщений: 5
UA: Opera 9.6

Re: Вопросы (и ответы) по разработке расширений

Хочу создать собственный журнал посещений с использованием sqlite. Но не могу разобраться с принципами работы с sqlite на javascript. Если есть инф-я по этому поводу, подскажите. буду очень признательна (какие именно ф-ции в коде мозилы отвечают за считывание/добавление даных в бд places.sqlite?)

Отсутствует

 

№20918-12-2009 12:27:11

Рено Гринлиф
Участник
 
Группа: Members
Зарегистрирован: 02-12-2009
Сообщений: 3
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

Claire пишет

Хочу создать собственный журнал посещений с использованием sqlite. Но не могу разобраться с принципами работы с sqlite на javascript. Если есть инф-я по этому поводу, подскажите. буду очень признательна (какие именно ф-ции в коде мозилы отвечают за считывание/добавление даных в бд places.sqlite?)

https://developer.mozilla.org/en/Storage.
У меня вопрос из той же области (SQLite и JavaScript). Существует таблица (tree).

tagidparent_id
first_level10
first_level20
second_level32
second_level42

Нужно построить DOM дерево.

Выделить код

Код:

...
statement=connection.createStatement("select * from tree order by parent_id");
my_document=document.implementation.createDocument("http://www.w3.org/1999/xhtml","root",null);
my_document.documentElement.setAttribute("id","0");
while (statement.executeStep()){
   element=my_document.createElement(statement.row.tag);
   element.setAttribute("id",statement.row.id);
   my_document.getElementById(statement.row.parent_id).appendChild(element);
}
...

Успешно вставляет первые два элемента (что в корне), но потом их не находит для вставки остальных. Говорит: "TypeError: my_document.getElementById(statement.row.parent_id) is null".
И ещё (другой вопрос по XUL'у). Как заставить элемент "<menulist editable='true'>" выводить только пункты, которые соответствуют тексту, набранному пользователем (как в строке адреса обозревателя)? Нужно писать свою функцию или достаточно эту возможность где-то включить?

Отредактировано Рено Гринлиф (19-12-2009 15:41:03)

Отсутствует

 

№21019-12-2009 08:20:35

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Рено Гринлиф

Успешно вставляет первые два элемента (что в корне), но потом их не находит для вставки остальных. Говорит: "TypeError: my_document.getElementById(statement.row.parent) is null".

Столбец в таблице называется parent_id
Наверное, надо писать my_document.getElementById(statement.row.parent_id).appendChild(element); вместо my_document.getElementById(statement.row.parent).appendChild(element); ?


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№21119-12-2009 15:39:42

Рено Гринлиф
Участник
 
Группа: Members
Зарегистрирован: 02-12-2009
Сообщений: 3
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

Извиняюсь. Опечатку (в сообщении) исправил, ошибка осталась.

Отредактировано Рено Гринлиф (19-12-2009 15:39:58)

Отсутствует

 

№21219-12-2009 16:39:04

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.5
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Рено Гринлиф

Извиняюсь. Опечатку (в сообщении) исправил, ошибка осталась.

Причина, как я понял, в том, что createElement создает элементы в namespace отличном от namespace элемента root.
И getElementById ищет элементы, атрибут id которых в том же namespace, что и root.

Так что должно работать

Выделить код

Код:

...createElementNS ("http://www.w3.org/1999/xhtml", ...);

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№21319-12-2009 18:04:52

Рено Гринлиф
Участник
 
Группа: Members
Зарегистрирован: 02-12-2009
Сообщений: 3
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

Благодарю за помощь.
Чуть не устроил себе рекурсию.

Отсутствует

 

№21414-01-2010 15:49:21

Kepper
Участник
 
Группа: Members
Зарегистрирован: 14-01-2010
Сообщений: 2
UA: unknown 0.0

Re: Вопросы (и ответы) по разработке расширений

Зравствуйте.
Я пишу первое свое расширение и с JavaSkript-ом только сейчас познаокмился.

Оно по действию пользователя будет анализировать текущую страницу и на другой тсранице выдавать результат.

Делаю это все на основе ReloadEvery 3.6.2 (https://addons.mozilla.org/en-US/firefox/addon/115)
так как с нуля создать пока не получилось.
Там в файле reloadeveryOverlay.xul я добавил
<menuitem id="test_id"  label="test_label;"  type="checkbox" oncommand="org.mozdev.reloadevery.ShowMainForm(document)"/>     

В результате получился в выпадающее меню один пункт который, который вызывает функцию с обработкой из прекрепленнго .js файла

Я все никак не могу получить доступ к данным на текущей html странице.

Следующие команды нормально выдают заголовок, адресс текущей страницы
alert(navigator.appName);
alert(window.document.title);
alert(window.content.location);
   
Но вот все попытки получить доступ к BODY или каким другим элементам закончились ничем.

alert("document.body.className="+document.body.className); - прекращается выполнение скрипта

var elems = document.getElementsByTagName("img");
alert("elems.length ="+elems.length); - найдено 0 элементов, хотя на странице есть изображения и в исходном коде присутствуют

Так как будут анализироваться произвольные страници, то использовать getElementById() нельзя

window.document.childNodes - исследование показалдо наличие 11 узлов один из которых XULobject, у которого еще 42 узла(но для разных страниц это число одинаково, значит очень сомнительно, что это, то что мне нужно).

alert("window.document.body.innerhtml="+window.document.body.innerhtml); - прекращается выполнение скрипта
    
alert(window.document.innerhtml) - undefined
alert(window.document.body) - undefined

Подскажите пожалусто как мне получить доступ?
Может я что-то упустил из виду.

Отсутствует

 

№21522-01-2010 10:28:33

Kepper
Участник
 
Группа: Members
Зарегистрирован: 14-01-2010
Сообщений: 2
UA: unknown 0.0

Re: Вопросы (и ответы) по разработке расширений

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

Для доступа к текущей странице можно использовать следующий код

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIWebNavigation)
                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
                   .rootTreeItem
                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                   .getInterface(Components.interfaces.nsIDOMWindow);

    var body = mainWindow.getBrowser().selectedBrowser.contentDocument.body;
    getSelection().selectAllChildren(body);
    var doc = window.getSelection().toString();/*Имя doc важно возможно это переход между страницами*/
       
    var elems = body.getElementsByTagName('td');/*Получаем все элементы где тег <td> */

Пока для меня это осталось магическим кодом.

Отсутствует

 

№21628-01-2010 11:25:35

Claire
Участник
 
Группа: Members
Зарегистрирован: 23-11-2009
Сообщений: 5
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

эта ссылка мне знакома. но все равно спасибо)
по-поводу динамического формирования tree:
-создаешь сначала каркас компонента tree:

Выделить код

Код:

<tree flex="1">
  <treecols>
    <treecol id="sender" label="Sender" flex="1"/>
    <splitter class="tree-splitter"/>
    <treecol id="subject" label="Subject" flex="2"/>
  </treecols>
  <treechildren id="tc">
  <script type="application/x-javascript" src="chrome://<package_name>/content/script_name.js"/>  
    </treechildren>
</tree>

- файл script_name.js может быть таким:

Выделить код

Код:

const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var tr_ch=document.getElementById("tc");
var i;
for (i=0;i<10;i++)
{
var it=document.createElementNS(XUL_NS, "treeitem"); // create a new XUL treeitem
var r=document.createElementNS(XUL_NS, "treerow"); // create a new XUL treerow
var cel1=document.createElementNS(XUL_NS, "treecell"); // create a new XUL treecell
cel1.setAttribute("label","col1 row"+i);
var cel2=document.createElementNS(XUL_NS, "treecell"); // create a new XUL treecell
cel2.setAttribute("label","col2 row"+i);
tr_ch.appendChild(it);
it.appendChild(r);
r.insertBefore(cel1,r.cel);
r.appendChild(cel2);
}

Посмотри. может пригодится

Добавлено 28-01-2010 11:37:32
всем доброго времени суток.
мне интересно: какие события обрабатывает браузер при формировании истории посещений?
добавляет ли он адрес страницы если просто перейти с одной вкладки на другую? или он рассматривает только загрузку новых страниц, в том числе игнорируя событие перезагрузки (обновления) текущей страницы? как он проверяет: успешно ли загружена страница? и т.п. Если кто-то знает ответ или место, где он находится, напишите пожалуйста.
(можно на почту DSvetlanaP@ukr.net)

Отсутствует

 

№21711-02-2010 12:01:15

Claire
Участник
 
Группа: Members
Зарегистрирован: 23-11-2009
Сообщений: 5
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

Нашла на сайте мозилы код:

Выделить код

Код:

var history = Cc["@mozilla.org/browser/nav-history-service;1"].
              getService(Ci.nsINavHistoryService);
let observer = {
  onBeginUpdateBatch: function() {
  },
  onEndUpdateBatch: function() {
  },
  onVisit: function(aURI, aVisitID, aTime, aSessionID, aReferringID, aTransitionType) {
  },
  onTitleChanged: function(aURI, aPageTitle) {
  },
  onDeleteURI: function(aURI) {
  },
  onClearHistory: function() {
  },
  onPageChanged: function(aURI, aWhat, aValue) {
  },
  onPageExpired: function(aURI, aVisitTime, aWholeEntry) {
  },
  QueryInterface: function(iid) {
    if (iid.equals(Components.interfaces.nsINavHistoryObserver) ||
        iid.equals(Components.interfaces.nsISupports)) {
      return this;
    }
    throw Cr.NS_ERROR_NO_INTERFACE;
  }
};

history.addObserver(observer, false);

пробовала вставлять alert("hi"); для проверки срабатывания события onVisit() - не работает.
Не понимаю, ведь observer -это как раз то что мне нужно, в его описании написано, что он используется как
наблюдатель за событиями (истории), а событие onVisit отвечает за посещение новой странички. ведь так?
если знаете в чем дело и понимаете - что я не так делаю, напишите, пож-та.

Отсутствует

 

№21816-02-2010 22:26:06

CountZero
Участник
 
Группа: Members
Зарегистрирован: 16-02-2010
Сообщений: 4
UA: Firefox 3.6

Re: Вопросы (и ответы) по разработке расширений

вот такой вопрос:
на сайте грузится яваскрипт. я хочу в своём расширении его перехватывать и изменять до того, как этот яваскрипт будет исполнен. для этого я использую код, который нашёл в расширении pirate questing. получаю ошибку:
dump is not defined (ошибка в строке 177 моего файла)
что не так? и вообще - в правильную ли сторону я копаю, или в коде должно быть что-то ещё?
browser.dom.window.dump.enabled установлено в true
(greasemonkey и foxreplace мне не подходят)

Выделить код

Код:

try {

    //largely from firebug. should refactor 
    if (typeof Cc == "undefined") {
        var Cc = Components.classes;
        var Ci = Components.interfaces;
    }
    if (typeof CCIN == "undefined") {
        function CCIN(cName, ifaceName){
            return Cc[cName].createInstance(Ci[ifaceName]);
        }
    }
    if (typeof CCSV == "undefined") {
        function CCSV(cName, ifaceName){
            if (Cc[cName]) 
                return Cc[cName].getService(Ci[ifaceName]); // if fbs fails to load, the error can be _CC[cName] has no properties
            else 
                dump("CCSV fails for cName:" + cName); 
        };
    }
     
    function TracingListener() {
        //this.receivedData = [];
    }
        
    TracingListener.prototype =
    {
        originalListener: null,
        receivedData: null,   // array for incoming data.
    
        onDataAvailable: function(request, context, inputStream, offset, count)
        {
           var binaryInputStream = CCIN("@mozilla.org/binaryinputstream;1",
                    "nsIBinaryInputStream");
            var storageStream = CCIN("@mozilla.org/storagestream;1", "nsIStorageStream");
            binaryInputStream.setInputStream(inputStream);
            storageStream.init(8192, count, null);
            
            var binaryOutputStream = CCIN("@mozilla.org/binaryoutputstream;1",
                    "nsIBinaryOutputStream");
               
            binaryOutputStream.setOutputStream(storageStream.getOutputStream(0));
    
            // Copy received data as they come.*/
            var data = binaryInputStream.readBytes(count);
            //var data = inputStream.readBytes(count);
            
            this.receivedData.push(data);
    
            binaryOutputStream.writeBytes(data, count);
            this.originalListener.onDataAvailable(request, context,storageStream.newInputStream(0), offset, count);
        },
    
        onStartRequest: function(request, context) {
            this.receivedData = [];
            this.originalListener.onStartRequest(request, context);
        },
    
        onStopRequest: function(request, context, statusCode)
        {
            try {
                request.QueryInterface(Ci.nsIHttpChannel);
            dump(request.originalURI.path);
                if (request.originalURI && 
                        request.originalURI.path.indexOf("/api/json/getBootstrapData.do") == 0) {
                    
                    //for(opt in request) {
                    //    dump("\nrequest."+opt);
                    //}
                    //dump(request.responseText);
                    var data = null;
                    if(request.requestMethod.toLowerCase() == "post") {
                        var postText = this.readPostTextFromRequest(request,context);
                        if (postText)  
                            data = ((String)(postText)).parseQuery();
                            
                    }
                    //dump("\nProcessing: " + request.originalURI.spec + "\n");
                    var date = Date.parse(request.getResponseHeader("Date"));
                    var responseSource = this.receivedData.join();
                    //fix leading spaces bug
                    responseSource = responseSource.replace(/^\s+(\S[\s\S]+)/,"$1");
                    responseSource = responseSource.replace(/\"testDelay\":8/gm,'"testDelay":0');
                }
            } catch(e) { dump(e);}
            this.originalListener.onStopRequest(request, context, statusCode);
        },
    
        QueryInterface: function (aIID) {
            if (aIID.equals(Ci.nsIStreamListener) ||
                aIID.equals(Ci.nsISupports)) {
                return this;
            }
            throw Components.results.NS_NOINTERFACE;
        },
        readPostTextFromRequest : function(request, context) {
            try
            {
                var is = request.QueryInterface(Ci.nsIUploadChannel).uploadStream;
                if (is)
                {
                    var ss = is.QueryInterface(Ci.nsISeekableStream);
                    var prevOffset;
                    if (ss)
                    {
                        prevOffset = ss.tell();
                        ss.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
                    }
        
                    // Read data from the stream..
                    var charset = "UTF-8";
                    var text = this.readFromStream(is, charset, true);
        
                    // Seek locks the file so, seek to the beginning only if necko hasn't read it yet,
                    // since necko doesn't seek to 0 before reading (at lest not till 459384 is fixed).
                    if (ss && prevOffset == 0) 
                        ss.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
        
                    return text;
                }
                else {
                    dump("Failed to Query Interface for upload stream.\n");
                }
            }
            catch(exc)
            {
                dump(exc);
            }
        
            return null;
        },
        readFromStream : function(stream, charset, noClose)    {
            
            var sis = CCSV("@mozilla.org/binaryinputstream;1", "nsIBinaryInputStream");
            sis.setInputStream(stream);
        
            var segments = [];
            for (var count = stream.available(); count; count = stream.available())
                segments.push(sis.readBytes(count));
        
            if (!noClose)
                sis.close();
        
            var text = segments.join("");
            return text;
        }
        
    }


    hRO = {

        observe: function(request, aTopic, aData){
            try {
                if (aTopic == "http-on-examine-response") {
                    request.QueryInterface(Ci.nsIHttpChannel);
                    
                dump(request.originalURI.path);
                    if (request.originalURI && 
                            request.originalURI.path.indexOf("/api/json/getBootstrapData.do") == 0) {
                        var newListener = new TracingListener();
                        request.QueryInterface(Ci.nsITraceableChannel);
                        newListener.originalListener = request.setNewListener(newListener);
                    }
                }
            } catch (e) {
                dump(e);
            
            }
        },
        
        QueryInterface: function(aIID){
            if (aIID.equals(Ci.nsIObserver) ||
            aIID.equals(Ci.nsISupports)) {
                return this;
            }
            
            throw Components.results.NS_NOINTERFACE;
            
        },
    };
        

    var observerService = Cc["@mozilla.org/observer-service;1"]
        .getService(Ci.nsIObserverService);
    
    observerService.addObserver(hRO,
        "http-on-examine-response", false);
    
} catch (e) { dump(e);}

Отредактировано CountZero (16-02-2010 22:27:12)

Отсутствует

 

№21918-02-2010 16:21:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Claire

Подозреваю, в начале надо написать

Выделить код

Код:

var Cc = Components. classes;
var Ci = Components. interfaces;

CountZero

А если определить как-нибудь функцию dump ?

Выделить код

Код:

function dump () {}

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№22019-02-2010 13:16:23

Hella
Участник
 
Группа: Members
Зарегистрирован: 19-02-2010
Сообщений: 1
UA: Chrome 4.0

Re: Вопросы (и ответы) по разработке расширений

Добрый день всем, никогда не создавал расширения для фф. Не знаю с чего начать. Хочу создать расширения в виде дополнительного меню. Аналог меню Закладки, это для одного форума, чтобы сделать навигации более быстрым.

Отсутствует

 

№22120-02-2010 08:01:12

TLemur
Забанен
 
Группа: Members
Зарегистрирован: 18-10-2004
Сообщений: 1764
UA: Firefox 3.6

Re: Вопросы (и ответы) по разработке расширений

Hella

Попробуйте в качестве точки отсчета взять это расширение.

Отсутствует

 

№22221-02-2010 15:52:54

Claire
Участник
 
Группа: Members
Зарегистрирован: 23-11-2009
Сообщений: 5
UA: Firefox 3.5

Re: Вопросы (и ответы) по разработке расширений

Anton пишет

Claire

Подозреваю, в начале надо написать

Выделить код

Код:

var Cc = Components. classes;
var Ci = Components. interfaces;

CountZero

А если определить как-нибудь функцию dump ?

Выделить код

Код:

function dump () {}

Разумеется, я это сделала. Все равно не работает. не в этом дело.

Отсутствует

 

№22321-02-2010 19:39:44

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.6
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Claire

У меня код работает, проверял на Firefox 3.5.6, 3.5.8, 3.6.

При добавлении в начало кода строк

Выделить код

Код:

var Cc = Components. classes;
var Ci = Components. interfaces;

а в метод onVisit строки

Выделить код

Код:

alert ("visit");

и открытия журнальной записи после выполнения кода, появляются два сообщения "visit".


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№22422-02-2010 23:29:21

CountZero
Участник
 
Группа: Members
Зарегистрирован: 16-02-2010
Сообщений: 4
UA: Firefox 3.6

Re: Вопросы (и ответы) по разработке расширений

Anton пишет

CountZero

А если определить как-нибудь функцию dump ?

Выделить код

Код:

function dump () {}

похоже, что у меня была ошибка в манифесте. сейчас всё работает почти нормально... но со странностями: если я перехватываю ответ на AJAX-запрос, html-документ или открытый в браузере яваскрипт - то расширение отрабатывает нормально. проблема в том, что мне надо перехватывать именно яваскрипт, определённый во внешнем файле через тэг <script type="test/javascript" src="http://www.example.com/example.js">. а при работе со внешними ресурсами почему-то нужные события не срабатывают :(

Отсутствует

 

№22523-02-2010 00:27:57

CountZero
Участник
 
Группа: Members
Зарегистрирован: 16-02-2010
Сообщений: 4
UA: Firefox 3.6

Re: Вопросы (и ответы) по разработке расширений

эта проблема тоже решилась, добавлением строки
observerService.addObserver(hRO, "http-on-examine-cached-response", false);
в скрипт

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]