ventana pestaña pagina open nueva misma emergente ejemplo abrir javascript html callback new-window

pestaña - abrir ventana emergente javascript



Establecer una función de devolución de llamada a una nueva ventana en javascript (2)

Actualizado para comentarios: si está abriendo su ventana a través de window.open() entonces en su página secundaria puede establecer una función en el elemento secundario para que sea solo una referencia que apunte a una función principal, por lo tanto, tenga esto en la página secundaria:

var RunCallbackFunction = function() { }; //reference holder only

Luego, en su padre (abridor), configure esa función cuando se cargue esa ventana secundaria, como esta:

//random function you want to call function myFunc() { alert("I''m a function in the parent window"); } //to actually open the window.. var win = window.open("window.html"); win.onload = function() { win.RunCallbackFunction = myFunc; };

Esto asigna la función en tu padre para que ahora sea el objetivo de ese niño ... y puedes señalar a cada niño a una función diferente si lo deseas, todos son independientes.

¿Hay alguna manera fácil de establecer una función de "devolución de llamada" a una nueva ventana que se abre en javascript? Me gustaría ejecutar una función del elemento principal desde la nueva ventana, pero quiero que el padre pueda establecer el nombre de esta función en particular (por lo que no debe estar codificada en la nueva página de Windows).

Por ejemplo, en el padre que tengo:

function DoSomething { alert(''Something''); } ... <input type="button" onClick="OpenNewWindow(linktonewwindow,DoSomething);" />

Y en la ventana secundaria quiero:

<input type="button" onClick="RunCallbackFunction();" />

La pregunta es cómo crear esta función OpenNewWindow y RunCallbackFunction . Pensé en enviar el nombre de la función como un parámetro de consulta a la nueva ventana (donde el script del lado del servidor genera las llamadas de función apropiadas en el HTML del hijo generado), que funciona, pero estaba pensando si hay otra o mejor manera de lograrlo esto, tal vez algo que ni siquiera requiere retoques en el lado del servidor.

Se dan la bienvenida a javascript puro, soluciones del lado del servidor y jQuery (u otros marcos).


var newWindow = window.open(window.location.origin); newWindow.onload = function() { $(newWindow.document.body).addClass(''new-window-body-class''); };