Este es dificil ...
Tengo esta tarea de construir un módulo para un gran sistema hecho con PHP. La regla más importante es que no puedo tocar el código del sistema central, por lo que no puedo corregir algunos de sus errores.
El servicio principal de mi módulo es crear un documento personalizado que no es editado por el editor predeterminado del sistema, sino por un formulario personalizado creado por mi módulo.
Para evitar que los usuarios editen el documento personalizado en lugar de completar el formulario, puedo configurar el documento como blocked en el momento de la creación.
Pero incluso con el documento bloqueado, el sistema abre su editor predeterminado en una nueva ventana emergente y luego muestra un mensaje de error incorrecto que no tiene nada que ver con el bloqueo, y está jugando con las cabezas de los usuarios.
Podría arreglar esto en un minuto cambiando algunas líneas en el código central, pero luego perdería mi trabajo. Tampoco puedo pedirle al propietario del sistema que solucione el problema porque tardaría una eternidad (el propietario es de una institución pública).
La función del sistema es así:
die() , de lo contrario, el documento no se crea en absoluto); Así que se me ocurrió la idea de que mi módulo podría, después de bloquear el documento, generar una etiqueta javascript con un código que evitaría que el código javascript creado por el sistema central use el comando window.open() , o al menos ocultar esta ventana emergente. .
¿Hay alguna manera de hacerlo con javascript?
Puede sobrescribir la apertura si su código puede ejecutarse antes de que ocurra la apertura:
const myOpen = window.open; let iwanttopen = false: window.open = function() { if (iwanttoopen) return myOpen(...arguments); // here YOU decide }