Was ist der richtige Weg, um Javascript's window.opener zu verwenden?
-
28-10-2019 - |
Frage
Ich habe ein Popup-Fenster erstellt und möchte darin eine Funktion verwenden, die ich im übergeordneten Fenster erstellt habe.Ich habe versucht, window.opener.parentFunction () zu verwenden, aber zu wissen, ob es funktioniert.Hat jemand anderes dieses Problem erlebt?So sieht mein Code aus.
function parentFunction(){
alert('testing');
}
function print(){
var new_win = window.open('','name','height=400,width=500');
var output = "<html><head></head><body><table>\n";
for (i = 0; i < 10; i++) {
output += "<td onclick='window.opener.parentFunction()'>"+i+"</td>";
}
output += "</table></body></html>\n";
new_win.document.write(output);
}
* Hat es funktioniert.Danke Jungs.
Lösung
Es gibt eine Reihe von Problemen mit Ihrem Code.Ich habe hier eine funktionierende Demo zusammengestellt.
HTML
<button id="clickMe">Click me</button>
<button id="clickMe">Click me</button>
JavaScript
window.onload = function() {
function parentFunction() {
alert('testing');
}
window.parentFunction = parentFunction;
var years = [1, 2, 3, 4, 5, 6];
function print() {
var new_win = window.open('', 'name', 'height=400,width=500');
//var cols = this.getCols();
var cols = 2;
var output = "<html><head></head><body><table>";
var cell_count = 1;
for (i = 0; i < years.length; i++) {
if (cell_count === 1) {
output += "<tr>";
}
output += "<td onclick='window.opener.parentFunction();'>" + years[i] + "</td>";
cell_count++;
// end the row if we've generated the expected number of columns
// or if we're at the end of the array
if (cell_count > cols || i === years.length - 1) {
output += "</tr>\n";
cell_count = 1;
}
}
output += "</table></body></html>";
new_win.document.write(output);
}
document.getElementById('clickMe').onclick = print;
};
-
years
wurde nicht definiert
-
this.getCols()
wurde nicht definiert
-
parentFunction
war (wahrscheinlich) im Bereich window
nicht sichtbar
window.onload = function() {
function parentFunction() {
alert('testing');
}
window.parentFunction = parentFunction;
var years = [1, 2, 3, 4, 5, 6];
function print() {
var new_win = window.open('', 'name', 'height=400,width=500');
//var cols = this.getCols();
var cols = 2;
var output = "<html><head></head><body><table>";
var cell_count = 1;
for (i = 0; i < years.length; i++) {
if (cell_count === 1) {
output += "<tr>";
}
output += "<td onclick='window.opener.parentFunction();'>" + years[i] + "</td>";
cell_count++;
// end the row if we've generated the expected number of columns
// or if we're at the end of the array
if (cell_count > cols || i === years.length - 1) {
output += "</tr>\n";
cell_count = 1;
}
}
output += "</table></body></html>";
new_win.document.write(output);
}
document.getElementById('clickMe').onclick = print;
};
years
wurde nicht definiert
this.getCols()
wurde nicht definiert
parentFunction
war (wahrscheinlich) im Bereich window
nicht sichtbar
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow