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

时间:2009-04-09 17:22:24

标签: javascript internet-explorer dom

我正在使用window.open()创建一个没有URL源的弹出窗口。我没有给它一个URL,因为我很快就要发表一个表格了。但是,与此同时,我想显示一个简短的“正在加载...”消息,这样用户就不会在2-3秒内查看空白页面,它将通过表单发布。< / p>

我尝试添加只写入弹出窗口文档的Javascript。这在Firefox和IE 8中运行良好,但在IE 6和7中没有使用Access Denied消息。任何人都知道这方面的方法吗?我希望能够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 &#133;'); // EPIC FAIL
        wref.focus();

4 个答案:

答案 0 :(得分:8)

IE认为“about:blank”是一个不安全的网址,它不会让你与之交谈。我会创建一个“正在加载...”静态HTML文件,然后打开它。

答案 1 :(得分:6)

<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&amp; 8,Opera 9.6,Firefox 2&amp; 3。 在Safari for Windows 3&amp; 4或Google Chrome。

当它确实有效时,会在“位置”框中产生一个相当丑陋的URL。

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

答案 2 :(得分:1)

另请注意,您在IE中提供的winName必须没有空格......如果是这样,它将失败。

答案 3 :(得分:0)

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