Tengo una biblioteca que se envolvió con un IIFE y se colocó en un archivo .js, y generalmente se ve y funciona de esta manera:
(function (libraryObject) { libraryObject.doSomething = function (){ document.getElementById() .... } })((window.library = window.library || {})); Cuando lo importo a mi aplicación React, solo hago: import './library'
Por lo tanto, se inyecta en la ventana en la que se inicializó mi aplicación React.
Y el objeto del documento también pertenece a esta ventana y cuando llamo, por ejemplo:
window.library.doSomething() Funcionará con el contexto de este documento , por lo que document.getElementById() .... dentro de la biblioteca funcionará con el mismo documento.
Pero necesito abrir una ventana emergente secundaria con const myChildPopup = window.open() e inyectar esta biblioteca en el contexto de mi ventana emergente secundaria y la próxima biblioteca puede hacer algo en el documento de mi ventana emergente secundaria, algo como esto:
myChildPopup.libraryObject.doSomething() .
De modo que el objeto del documento en este caso dentro de la biblioteca se referirá a myChildPopup.document . Por ejemplo: document.getElementById() .... // document === myChildPopup.document
¿Alguna idea de como hacer esto?