javascript open.window возвращает ноль в вызываемой функции - PullRequest
1 голос
/ 13 мая 2009

Я разработал функцию, которая при вызове должна открывать окно, но возвращает null. Если я делаю открывающееся окно в оригинальной функции JavaScript, оно работает. Я предполагаю, что это оригинальная функция, передающая управление другой функции, но по какой-то причине это не работает.

Вот моя оригинальная функция, она в основном вызывает новый файл 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("");
        }
    }​

1 Ответ

0 голосов
/ 22 сентября 2010

См. эту ветку обсуждения , которая связывает эту проблему с 32-битным браузером IE8, работающим на 64-битной Windows 7.

Я только что столкнулся с этим несколько дней назад. Моя машина разработки начала вести себя по-другому, всплывающие окна больше не работают на многих сайтах, в том числе на том, который я разрабатываю, и не видно никаких исправлений. Я должен запустить IE как администратор, тогда он работает. Отключение защищенного режима не решает эту проблему. 64-битный браузер не имеет этой проблемы.

Почему в моем случае это началось несколько недель назад, я не могу сказать. 16/16/16 было обновление безопасности, которое, я подозреваю, вызвало изменение в поведении. Это очень странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...