Dies ist the test case.alert() aufgerufen neues Fenster scheint von der ursprünglichen Seite aufgerufen werden, wenn jQuery Methoden verwenden
Mit JavaScript:
$('.js').on('click', function() {
var newwindow = window.open();
newwindow.document.write('<span>test</span>');
newwindow.document.write('<scr' + 'ipt>alert(1)</scr' + 'ipt>');
});
Dies gibt das erwartete Ergebnis: Der Dialog Alarm wird im neuen Fenster angezeigt wird.
Mit jQuery:
$('.jquery').on('click', function() {
var newwindow = window.open();
$(newwindow.document.body).append('<span>test</span>', '<scr' + 'ipt>alert(1)</scr' + 'ipt>');
});
Der Dialog Warnung wird in der Haupt-Seite gezeigt.
Warum der Unterschied? Fehle ich hier etwas?
Dieses Verhalten wurde in Chrom/FF/Safari/IE getestet
EDIT
Wie mishik wies darauf hin, ist dies darauf zurückzuführen, wie jQuery Script-Tags behandelt, die globalEval
Methode um Skripte im globalen Kontext auszuführen. So eine mögliche Abhilfe für jQuery (aber nicht zurück auf die reine JavaScript-Methode fallen) könnte die newwindow
Variable im globalen Kontext zu setzen sein zu und verwenden Sie es so, zB:
$('.jquery').on('click', function() {
newwindow = window.open();
$(newwindow.document.body).append('<span>test</span>','<scr' + 'ipt>newwindow.window.alert(1)</scr' + 'ipt>');
});
+1 Ist dies der Grund ist, warum die Leute sagen jQuery schneller als Javascript ist? – Praveen