javascript open.window在被调用的函数中返回null

时间:2009-05-13 10:49:56

标签: javascript class javascript-events function

我开发了一个函数,在调用时应该打开一个窗口,但它返回null。如果我在原始JavaScript函数中执行打开窗口,它可以工作。我想它的原始函数将控制传递给另一个函数但由于某种原因这不起作用。

这是我的原始函数,它基本上调用一个新的JavaScript文件并加载一个HTML文件,当“Ready”时,它需要显示带有HTML文件的window.open,该文件现在是字符串形式。

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 :(得分:0)

请参阅this discussion thread,将此问题归因于在64位Windows 7上运行的32位IE8浏览器。

几天前我刚刚遇到这个问题。我的开发机器开始表现不同,弹出窗口不再在许多站点上工作,包括我开发的那个,并且看不到任何修复。我必须以管理员身份启动IE,然后才能运行。禁用保护模式无法解决此问题。 64位浏览器没有这个问题。

为什么在我的情况下,这只是在几个星期前开始我不能说。在9/16有一个安全更新,我怀疑导致了行为的变化。这很奇怪。