Как перенаправить из кода дополнения Firefox?

Я создаю надстройку для Firefox. Я прикрепил прослушиватель событий к ссылкам с классом. При нажатии на ссылку мне нужно перенаправить пользователя на другую страницу (желательно на отдельную вкладку) с некоторыми дополнительными параметрами, добавленными к ней в виде строки запроса. Как я могу добиться этого от аддона? Я попытался установить location.href, но он открывает цель как всплывающее окно (я имею в виду окно без панели инструментов и меню).

Это функция, которая срабатывает при событии lck:

var myExtension = {
init: function() {
    // The event can be DOMContentLoaded, pageshow, pagehide, load or unload.
    if(gBrowser) gBrowser.addEventListener("DOMContentLoaded", this.onPageLoad, false);
},
onPageLoad: function(aEvent) {
    var doc = aEvent.originalTarget; // doc is document that triggered the event
    var win = doc.defaultView; // win is the window for the doc
    // test desired conditions and do something
    // if (doc.nodeName == "#document") return; // only documents
    // if (win != win.top) return; //only top window.
    // if (win.frameElement) return; // skip iframes/frames
//        alert("page is loaded \n" +doc.location.href);
        function toFb()
        {
            var Ele2=doc.getElementsByClassName('js-action-reply')[0].parentNode.parentNode.parentNode.parentNode.children[1];
            doc.location.href="http://www.lendingstream.co.uk/?txt="+Ele2.innerHTML;
        }
}
}
window.addEventListener("load", function load(event){
window.removeEventListener("load", load, false); //remove listener, no longer needed
myExtension.init();
},false);

person Vivek S    schedule 08.10.2012    source источник
comment
doc.location.href определенно не будет открывать никаких всплывающих окон - он меняет местоположение документа. Что такое doc в вашем примере кода?   -  person Wladimir Palant    schedule 08.10.2012
comment
@WladimirPalant опубликовал полный код... пожалуйста, проверьте   -  person Vivek S    schedule 08.10.2012


Ответы (2)


Если вам нужно открыть страницу в новой вкладке, вам следует открыть вкладку :

gBrowser.addTab("http://www.lendingstream.co.uk/?txt=" + encodeURIComponent(Ele2.innerHTML));

Обратите внимание, что я использовал encodeURIComponent() функцию, чтобы убедиться, что параметр кодируется правильно.

person Wladimir Palant    schedule 08.10.2012

Вы пробовали это?

window.open('http://www.lendingstream.co.uk/?txt='+Ele2.innerHTML);

Он работает с расширениями в Chrome и с любой обычной страницы при использовании Chrome, IE или FF.

person enhzflep    schedule 08.10.2012