JQuery - Schreiben an opener-Fenster
Ich habe eine HTML-Seite, öffnet eine weitere Seite, über JavaScript. Wenn ein Benutzer auf eine Schaltfläche klickt, auf der anderen Seite, möchte ich um eine Nachricht in einem DIV-Tag der Eröffnung-Seite via JQuery. Ich kann nicht meinen finger auf Sie, aber ich kann nicht scheinen, um diese zu arbeiten. Hier ist mein opener-Seite
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
</head>
<body>
<input type="button" onclick="window.open('dialog.html', '_blank', 'height=200, width=300');" value="launch!" />
<div id="testDiv"></div>
</body>
</html>
Wenn der Benutzer klickt auf den "Start!" - button, erscheint ein dialog. Den code für den dialog sieht wie folgt aus:
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
</head>
<body>
<input type="button" onclick="updateOpener()" value="Update Opener" />
<script type="text/javascript">
function updateOpener()
{
var testDiv = window.opener.jQuery("#testDiv");
if (testDiv != null) {
alert("here");
testDiv.html("Updated!");
}
}
</script>
</body>
</html>
Überraschend, dass die alert-box erscheint. Aber ich kann nicht scheinen, aktualisieren Sie den HTML-von DIV in meiner Seite öffnen. Weiß jemand, wie dies zu tun?
- Der obige code funktioniert für mich.
- Er gerade repariert hat, mit seinem edit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie verweisen "confirmDiv". Wo ist das DIV?
Können Sie nicht, dass, wenn die übergeordnete Seite (der opener) befindet sich auf einer anderen Domäne. Ansonsten ist dein code funktioniert perfekt.
Auch Ihr != null-check ist wahrscheinlich nicht das tun, was Sie denken, es tut, wie die jQuery-Funktion nie null zurück. Wenn Sie die überprüfung der Existenz eines Elementes müssen Sie es so machen...
Ähmm, es funktioniert bei mir in Firefox 3.0.11, IE8 und Chrome 2... (I. e. die dialog.html button aktualisiert die HTML-in die opener Seite zu sagen " Aktualisiert!'.)
Seltsam, dein Beispiel funktioniert bei mir in Chrome, IE 8 und FireFox. Haben Sie noch andere details?