Tengo un código javascript que está conectado a un html llamado " old.html ". Hago algo allí y luego tengo otro html llamado " new.html " en el que quiero agregar elementos html allí.
Tengo este código en el que trato de asignar el div q1 a la variable myVar .
var printWindow = window.open("http://10.180.101.58:5500/new.html", 'Print'); var myVar = printWindow.document.getElementById('q1');mi html se ve así:
<body> <form> <div id="q1"></div> </form> <script src="DemoCode.js"></script> </body> Estos 2 archivos están en el mismo directorio, pero creo que el problema está en window.open()
No puedo hacer document.getElementById() porque también tengo el " old.html ", que digamos que es el html original conectado a mi javascript y cada vez que llamo a document.getElementById() obtiene elementos de ese.
¿Alguien sabe alguna forma para que pueda obtener elementos de " new.html ""?
Estoy usando <script src="DemoCode.js"></script> en ambos html para poder decir que ambos están conectados a mi javaScript.
Hay dos respuestas aquí:
Si la ventana donde el código hace esto está en el mismo origen ( http://10.180.101.58:5500 ), debe esperar a que se cargue el DOM en la nueva ventana (por ejemplo, usando el evento DOMContentLoaded ) antes de puede acceder a ella.
Si la ventana donde el código hace esto no está en el mismo origen que la nueva ventana que está abriendo, entonces no puede acceder a su DOM, ya que, por supuesto, eso sería un gran agujero de seguridad.
Así es como lo haría en el caso #1:
const printWindow = window.open("http://10.180.101.58:5500/new.html", "Print"); printWindow.addEventListener("DOMContentLoaded", () => { const myVar = printWindow.document.getElementById("q1"); // ...use it here... });Estoy usando
<script src="DemoCode.js"></script>en ambos html para poder decir que ambos están conectados a mi javaScript.
Eso de ninguna manera conecta las ventanas (¡imagine todas las ventanas que estarían conectadas por jQuery o React cargadas desde un CDN!). Todo lo que hace es cargar el código en ese archivo en ambas ventanas.