J'ai développé une fonction qui, lorsqu'elle est appelée, devrait ouvrir une fenêtre mais elle renvoie null
. Si je fais la fenêtre d'ouverture dans la fonction JavaScript d'origine cela fonctionne. Je suppose que c'est la fonction d'origine qui transmet le contrôle à l'autre fonction, mais pour une raison quelconque, cela ne fonctionne pas.javascript open.window renvoie null dans la fonction appelée
Voici ma fonction d'origine, cela appelle un nouveau fichier JavaScript et charge un fichier HTML et quand "Prêt" il doit afficher le fichier window.open avec le fichier HTML qui est maintenant sous forme de chaîne.
order.prototype.printMe = function() {
order_resume.loadthis("myTestPage.html", "showData");
// OPENING WINDOW HERE WORKS; but the the html file that is loaded
// in above line hasn't finsihed loading - so i need to show it form
// the function below once in "ready" state
/* child1 = window.open ("about:blank","_blank");
child1.document.write(myDocument);
child1.document.close();
*/
}
Et voici est ma fonction qui est appelée à partir de la fonction d'origine:
function showResume() {
this.req = false;
reservaResumen.prototype.showData = function() {
if (this.req.readyState == 4) {
child1 = window.open("about:blank", "_blank"); /// THIS RETURNS NULL
child1.document.write("test");
child1.document.close();
}
}
reservaResumen.prototype.loadthis = function(url, myMethod) {
if (window.XMLHttpRequest && !(window.ActiveXObject)) {
try {
this.req = new XMLHttpRequest();
}
catch (e) {
this.req = false;
}
}
else if (window.ActiveXObject) {
try {
this.req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
this.req = false;
}
}
}
if (this.req) {
var loader = this;
this.req.onreadystatechange = function() {
eval("loader." + myMethod + ".call(loader)")
}
this.req.open("GET", url, true);
this.req.send("");
}
}
Un bloqueur de fenêtres contextuelles est-il activé? – epascarello
non - car il l'ouvre dans la fonction d'origine .. –
s'il vous plaît, vérifiez les paramètres du bloqueur de fenêtres contextuelles. Les navigateurs n'ouvriront pas les fenêtres sans interaction de l'utilisateur. Aussi, lorsque l'utilisateur fait par exemple. une action de clic, mais vous attendez longtemps (par exemple en faisant des opérations asynchrones comme les requêtes Ajax), les navigateurs bloquent aussi les fenêtres et retournent null pour window.open. – Rafael