Я разработал функцию, которая при вызове должна открывать окно, но оно возвращает null
. Если я открываю окно в исходной функции JavaScript, оно работает. Я полагаю, что его исходная функция передает управление другой функции, но по какой-то причине это не работает.javascript open.window возвращает null в вызываемой функции
Вот моя оригинальная функция, это в основном вызывает новый файл JavaScript и загружает файл HTML, а когда «Готов», ему нужно отобразить window.open с HTML-файлом, который теперь находится в форме строки.
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();
*/
}
А вот моя функция, которая вызывается из исходной функции:
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("");
}
}
Включен ли блокиратор всплывающих окон? – epascarello
нет - потому что он открывает его в исходной функции. –
, пожалуйста, дважды проверьте настройки блокировки всплывающих окон. Браузеры не будут открывать окна без взаимодействия с пользователем. Кроме того, когда пользователь делает, например. действие click, но вы ждете до конца (например, выполняя некоторые асинхронные операции, такие как Ajax-запросы), браузеры также блокируют окна и возвращают null для window.open. – Rafael