2009-04-09 75 views
3

我使用window.open()创建没有URL源的弹出窗口。我不给它一个网址,因为我很快就要发布一个表单。然而,在此期间,我想显示一个简短的“现在正在加载...”消息,以便用户在2-3秒内不会查看空白页面,以便通过表单发布完成。IE 6/7访问被拒绝尝试访问弹出窗口.document

我试着添加Javascript,只是写入弹出窗口的文档。这在Firefox和IE 8中效果很好,但是在IE 6和7中的访问被拒绝消息失败。任何人都知道解决这个问题的方法?我希望能够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(); 

回答

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 & 8,歌剧9.6,火狐2 & 3. 不在Safari的Windows 3 & 4或谷歌浏览器工作。

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

如果上面列出的浏览器的支持是可以接受的,您可以使用该解决方案提供,否则我会做什么大卫说和window.open('Loading.htm' ...)其中Loading.htm包含要显示(你应该保持它的重量轻,否则它可能会采取任何内容加载和渲染比表单将POST更长)。

8

IE认为“有关:空白”是一个不安全的网址,它不会让你随便吧。我会创建一个“正在加载...”静态HTML文件,然后打开它。

1

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

0

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