2009-04-09 70 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()以訪問它