代码之家  ›  专栏  ›  技术社区  ›  jodonnell

尝试访问弹出窗口时IE 6/7访问被拒绝。document

  •  3
  • jodonnell  · 技术社区  · 15 年前

    我正在使用window.open()创建一个没有URL源的弹出窗口。我不给它一个网址,因为很快我会想给它张贴一个表单。但是,同时我想显示一条简短的“正在加载…”消息,这样用户在2-3秒内不会看到空白页,这将需要通过表单发布。

    我尝试添加只写入弹出窗口文档的javascript。在火狐和IE8中效果很好,但在IE6和IE7中访问被拒绝消息失败。有人知道怎么解决这个问题吗?我希望能够a)将一些HTML硬编码到window.open(),b)学习如何在这种情况下更新弹出窗口的dom,或c)听到任何人能想到的事情。

    下面是我用来生成窗口的代码:

        var wref = window.open("", winName, "toolbar=1,resizable=1,menubar=1,location=1,status=1,scrollbars=1,width=800,height=600");
        if (wref != null) {
            try {wref.opener = self;} catch (exc) {}
    
            // while we wait for the handoff form post to go through, display a simple wait message
            $j(wref.document.body).html('Now loading …'); // EPIC FAIL
            wref.focus();
    
    4 回复  |  直到 15 年前
        1
  •  6
  •   Grant Wagner    15 年前
    <a href="#" onclick="return test();">Test</a>
    <script type="text/javascript">
    function test() {
        window.open('javascript:opener.write(window);', '_name', 'width=200,height=200');
    }
    function write(w) {
        w.document.write("Hello, World.");
    }
    </script>
    

    适用于IE 6、7&8、Opera 9.6、Firefox 2&3。 不适用于Safari for Windows 3&4或Google Chrome。

    当它工作时,会在“位置”框中产生一个非常难看的URL。

    如果上面列出的浏览器支持是可以接受的,那么您可以使用提供的解决方案,否则我会按照David所说的做。 window.open('Loading.htm' ...) 哪里 Loading.htm 包含您想要显示的任何内容(您可能应该保持其轻量,否则加载和呈现的时间可能比表单发布的时间长)。

        2
  •  8
  •   David    15 年前

    IE认为“about:blank”是一个不安全的URL,它不会让您与之交谈。我将创建一个“现在正在加载…”静态HTML文件并打开它。

        3
  •  1
  •   scunliffe    15 年前

    还要注意,您在IE中提供的winname不能有空格…如果这样,它将失败。

        4
  •  0
  •   Ken    15 年前

    另一个解决方法是在您的站点上打开一个空的“blank.htm”文件,然后执行document.open()以访问它。