sirve screenshots que para pantalla las izquierda guardan exportar donde derecha datos contraseñas complemento carpeta captura barra antiguos firefox url xul sidebar

screenshots - Obtenga la URL de la página actual de una extensión de la barra lateral de Firefox



firefox screenshots (6)

Estoy escribiendo una extensión de barra lateral para Firefox y necesito una forma de obtener la URL de la página actual para poder verificarla en una base de datos y mostrar los resultados. ¿Cómo puedo hacer esto?


Esto parece funcionar bien para mí

function getCurrentURL(){ var currentWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser"); var currBrowser = currentWindow.getBrowser(); var currURL = currBrowser.currentURI.spec; return currURL; }


Hola,

Intenté implementar esto en JavaScript porque también lo necesito en mi proyecto, pero las tres soluciones posibles no funcionaron. También implementé un sitio pequeño para probarlo, pero tampoco funcionó.

Aquí está el código fuente del pequeño sitio:

<html> <head> <title>Test</title> <script type="text/javascript"> function Fall1 () { alert(window.top.getBrowser().selectedBrowser.contentWindow.location.href); } function Fall2() { var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); alert(mainWindow.getBrowser().selectedBrowser.contentWindow.location.href); } function Fall3() { alert(document.getElementById("sidebar").contentWindow.location.href); } </script> </head> <body> <form name="Probe" action=""> <input type="button" value="Fall1" onclick="Fall1()"> <input type="button" value="Fall2" onclick="Fall2()"> <input type="button" value="Fall3" onclick="Fall13()"> </form> </body> </html>



Si solo necesita dominio y subdominio ;

Uso;

PageDomain.getDomain(); // .com PageDomain.getSubDomain(); // abc..com

Código;

PageDomain = { getDomain : function() { var docum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser"); var domain = PageDomain.extractDomain(new String(docum.location)); return domain; }, getSubDomain : function() { var docum = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser"); var subDomain = PageDomain.extractSubDomain(new String(docum.location)); return subDomain; }, extractDomain: function(host) { var s; // Credits to Chris Zarate host=host.replace(''http:////'',''''); host=host.replace(''https:////'',''''); re=new RegExp("([^/]+)"); host=host.match(re)[1]; host=host.split(''.''); if(host[2]!=null) { s=host[host.length-2]+''.''+host[host.length-1]; domains=''ab.ca|ac.ac|ac.at|ac.be|ac.cn|ac.il|ac.in|ac.jp|ac.kr|ac.nz|ac.th|ac.uk|ac.za|adm.br|adv.br|agro.pl|ah.cn|aid.pl|alt.za|am.br|arq.br|art.br|arts.ro|asn.au|asso.fr|asso.mc|atm.pl|auto.pl|bbs.tr|bc.ca|bio.br|biz.pl|bj.cn|br.com|cn.com|cng.br|cnt.br|co.ac|co.at|co.il|co.in|co.jp|co.kr|co.nz|co.th|co.uk|co.za|com.au|com.br|com.cn|com.ec|com.fr|com.hk|com.mm|com.mx|com.pl|com.ro|com.ru|com.sg|com.tr|com.tw|cq.cn|cri.nz|de.com|ecn.br|edu.au|edu.cn|edu.hk|edu.mm|edu.mx|edu.pl|edu.tr|edu.za|eng.br|ernet.in|esp.br|etc.br|eti.br|eu.com|eu.lv|fin.ec|firm.ro|fm.br|fot.br|fst.br|g12.br|gb.com|gb.net|gd.cn|gen.nz|gmina.pl|go.jp|go.kr|go.th|gob.mx|gov.br|gov.cn|gov.ec|gov.il|gov.in|gov.mm|gov.mx|gov.sg|gov.tr|gov.za|govt.nz|gs.cn|gsm.pl|gv.ac|gv.at|gx.cn|gz.cn|hb.cn|he.cn|hi.cn|hk.cn|hl.cn|hn.cn|hu.com|idv.tw|ind.br|inf.br|info.pl|info.ro|iwi.nz|jl.cn|jor.br|jpn.com|js.cn|k12.il|k12.tr|lel.br|ln.cn|ltd.uk|mail.pl|maori.nz|mb.ca|me.uk|med.br|med.ec|media.pl|mi.th|miasta.pl|mil.br|mil.ec|mil.nz|mil.pl|mil.tr|mil.za|mo.cn|muni.il|nb.ca|ne.jp|ne.kr|net.au|net.br|net.cn|net.ec|net.hk|net.il|net.in|net.mm|net.mx|net.nz|net.pl|net.ru|net.sg|net.th|net.tr|net.tw|net.za|nf.ca|ngo.za|nm.cn|nm.kr|no.com|nom.br|nom.pl|nom.ro|nom.za|ns.ca|nt.ca|nt.ro|ntr.br|nx.cn|odo.br|on.ca|or.ac|or.at|or.jp|or.kr|or.th|org.au|org.br|org.cn|org.ec|org.hk|org.il|org.mm|org.mx|org.nz|org.pl|org.ro|org.ru|org.sg|org.tr|org.tw|org.uk|org.za|pc.pl|pe.ca|plc.uk|ppg.br|presse.fr|priv.pl|pro.br|psc.br|psi.br|qc.ca|qc.com|qh.cn|re.kr|realestate.pl|rec.br|rec.ro|rel.pl|res.in|ru.com|sa.com|sc.cn|school.nz|school.za|se.com|se.net|sh.cn|shop.pl|sk.ca|sklep.pl|slg.br|sn.cn|sos.pl|store.ro|targi.pl|tj.cn|tm.fr|tm.mc|tm.pl|tm.ro|tm.za|tmp.br|tourism.pl|travel.pl|tur.br|turystyka.pl|tv.br|tw.cn|uk.co|uk.com|uk.net|us.com|uy.com|vet.br|web.za|web.com|www.ro|xj.cn|xz.cn|yk.ca|yn.cn|za.com''; domains=domains.split(''|''); for(var i=0;i<domains.length;i++) { if(s==domains[i]) { s=host[host.length-3]+''.''+s; break; } } } else { s=host.join(''.''); } // Thanks Chris return s; }, extractSubDomain:function(host){ host=host.replace(''http:////'',''''); host=host.replace(''https:////'',''''); re=new RegExp("([^/]+)"); host=host.match(re)[1]; return host; } }


https://developer.mozilla.org/En/Working_with_windows_in_chrome_code

Si necesita acceder al navegador principal desde el código que se ejecuta en una barra lateral, tendrá algo así como lo que Wimmel publicó, excepto que la última línea podría simplificarse a

mainWindow.content.location.href

(alternativamente puede usar la API devolviendo un nsIURI).

Dependiendo de su tarea, puede tener sentido ejecutar el código en la ventana del navegador (por ejemplo, en un controlador de carga de página), luego puede acceder a la página actual a través del atajo de content y la barra lateral a través de document.getElementById("sidebar").contentDocument o .contentWindow .


window.top.getBrowser().selectedBrowser.contentWindow.location.href;

podría funcionar, de lo contrario, creo que necesita usar:

var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;