son puedo pestañas marcadores los las herramientas guardan donde cuales cambiar barra automatico agregar firefox tabs firefox-addon clipboard firefox-addon-sdk

puedo - donde se guardan los marcadores de firefox



¿Cómo pasar un valor entre las pestañas del navegador? (2)

Estoy tratando de pasar un valor de una pestaña a otra.

Intenté sessionStorage y el portapapeles, pero no tuve suerte hasta ahora. Aquí está la demostración y el código también:

https://builder.addons.mozilla.org/package/154290/latest/

Lo que intenta hacer es obtener el texto seleccionado y pasarlo a la pestaña abierta:

// Create a new context menu item. var menuItem = contextMenu.Item({ label: "Check with Proofread Bot", context: contextMenu.SelectionContext(), contentScript: ''self.on("click", function () {'' + '' var text = window.getSelection().toString();'' + '' sessionStorage.setItem("proofread_bot_chrome", text);'' + '' self.postMessage(text);'' + ''});'', onMessage: function(text) { clipboard.set(text); //sessionStorage.setItem("proofread_bot_chrome", text); tabs.open({ url: "http://proofreadbot.com", onOpen: function onOpen(tab) { // do stuff like listen for content // loading. alert(clipboard.get()); alert(selection.text); sessionStorage.setItem("proofread_bot_chrome", clipboard.get()); } }); } });


Debería probar localStorage en lugar de sessionStorage. localStorage se comparte entre los documentos del mismo origen. Aunque persiste incluso en el cierre de pestañas, lo que puede o no ser conveniente dependiendo de sus requisitos.

sessionStorage es por documento y, por lo tanto, no se comparte entre pestañas.


sessionStorage y localStorage siempre están vinculados a un dominio. Los scripts de contenido se ejecutan con los privilegios de la página web, lo que significa que acceden al almacenamiento de la sesión para esa página web; no es muy útil para pasar datos. Y simplemente no tienen acceso al portapapeles.

Esto significa que no puede evitar los mensajes "tradicionales". Al abrir la pestaña, debe adjuntar un script de contenido, esperar que esté listo (el script de contenido puede enviar un mensaje para indicarlo) y enviarle el texto. Algo como esto:

onOpen: function(tab) { var worker = tab.attach({ contentScript: "self.on(''message'', function(text) {alert(text);});" + "self.postMessage(null);", onMessage: function() { worker.postMessage(text); } }); }

Para referencia: comunicación usando postMessage()