Frage

Gibt es eine einfache Möglichkeit, einen „Rückruf“ -Funktion auf ein neues Fenster zu setzen, die in Javascript geöffnet wird? Ich möchte eine Funktion der Eltern aus dem neuen Fenster laufen, aber ich möchte, dass die Eltern in der Lage sein, den Namen dieser besonderen Funktion zu setzen (damit es nicht in der neuen Fenster Seite fest einprogrammiert werden sollte).

Zum Beispiel in den Eltern ich habe:

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

Und das Kind Fenster Ich möchte:

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

Die Frage ist, wie diese OpenNewWindow und RunCallbackFunction Funktionen zu erstellen. Ich dachte über die Funktion des Namens als Abfrageparameter an das neue Fenster Senden (wo der Server-Seite Skript die entsprechenden Funktionsaufrufe in der generierten Kinder HTML erzeugt), die funktioniert, aber ich dachte, ob es eine andere ist, oder besser Weise zu erreichen diese, vielleicht etwas, das noch nicht Server-Seite Bastelei erforderlich.

Reine Javascript, serverseitige Lösungen und jQuery (oder anderen Frameworks) sind alle willkommen.

War es hilfreich?

Lösung

Aktualisiert für Kommentare: Wenn Sie öffnen das Fenster über window.open() dann in Ihrem Kind Seite können Sie eine Funktion in dem Kind auf nur ein Verweis auf eine übergeordnete Funktion zeigen werden, so haben diese in den Kindern Seite:

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

Dann in Ihrer Eltern (Öffner), Satz, dass Funktion, wenn dieses Kind Fenster geladen wird, wie folgt aus:

//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; };

Ordnet die Funktion in Ihren Eltern jetzt das Ziel dieses Kindes sein ... und man kann jedes Kind auf eine andere Funktion zeigen, wenn Sie es wünschen, sie sind alle unabhängig.

Andere Tipps

var newWindow = window.open(window.location.origin);

newWindow.onload = function() {
    $(newWindow.document.body).addClass('new-window-body-class');
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top