Estoy tratando de obtener algunos datos de una página web y pasarlos a una nueva ventana e imprimirlos desde allí. Aquí está mi código:
var print_btn; let win; document.getElementsByTagName('html')[0].innerHTML = document.getElementsByTagName('html')[0].innerHTML +"<button class=\"printbuton\">Print Button</button>"; print_btn = document.getElementsByClassName('printbuton')[0]; print_btn.onclick = function() { console.log("check 1"); var WinPrint = window.open('', '', 'left=0,top=0,width=384,height=900,toolbar=0,scrollbars=0,status=0'); console.log("check 2"); WinPrint.document.write('Print this'); console.log("check 3"); WinPrint.document.write('Print that'); WinPrint.document.write('and this'); console.log("button pushed"); }Cuando intento esto, abre la nueva ventana, pero permanece vacía y en la consola registra solo "verificar 1" y "verificar 2". Probé que si i console.log(WinPrint) se muestra en la consola, pero si hago console.log(WinPrint.document) no muestra nada y el script se detiene allí.
Su código no funcionará debido a un error (XSS [Cross Site Scripting]) . Firefox le impide modificar el contenido de un dominio diferente.
Como está abriendo una nueva ventana, ahora tiene un nombre de dominio diferente (sobre: en blanco) al que comenzó.
Hay algunas maneras de hacer esto, lo que viene rápidamente a la mente sería usar la API window.create y usar parámetros de consulta para pasar los datos a la nueva ventana:
function onCreated(windowInfo) { console.log('SUCCESS'); } function onError(error) { console.log(`Error: ${error}`); } print_btn.addEventListener('click', event => { var popupURL = browser.extension.getURL("popup/popup.html?line=blahblah&line2=loremipsum"); var creating = browser.windows.create({ url: popupURL, type: "popup", height: 200, width: 200 }); creating.then(onCreated, onError); }); O puede hacer algo más elaborado abriendo usando windows.create y luego usando runtime.sendmessage para pasar los mensajes de regreso al script de fondo y luego a la nueva ventana.
O probablemente podría inyectar una ventana emergente en la página y hacer algo similar.