2012-07-05 86 views
3

我在Windows 7上使用IE8。引用了幾個線程,並明白在IE8中,當我使用window.open彈出一個新窗口時,JavaScript window.open返回null值。window.open()仍然返回null

如果我以管理員身份運行IE或禁用保護模式,我會看到window.open返回期望的對象。

我正在尋找一種解決方案,除了上面提到的選項。對於這樣一個小功能(打開彈出窗口),我不能要求客戶以管理員身份運行IE或禁用保護模式。

如果有任何解決方法,請讓我知道。這將是一個很大的幫助。

首先,我想確保當用戶在鏈接上多次點擊並且將焦點放在已經打開的窗口上時,只有一個窗口被打開。爲了達到這個目的,我需要從window.open中獲取對象,以便檢查窗口是否已經打開,並將焦點放在已經打開的窗口上。否則,打開一個新窗口。

+0

[這是否幫助(http://stackoverflow.com/questions/9390504/how-to-prevent-reopening-new-window-by-click-event-in-jquery/9391600#9391600)? –

+0

http://stackoverflow.com/q/1827616/1341062 – noboundaries

回答

-1

可以使用window.showModalDialog作爲替代或替換爲window.open方法。

然後window.open更安全。它不會允許用戶單擊父頁面。

實例應用:

var myFeatures = "dialogWidth:1060px;dialogHeight:550px;resizable:yes"; 

window.showModalDialog(url,window,myFeatures); 
     //Here window is an object, no need to assign or declare. 

如果您想更詳細解釋見Here。 //第五個問題。

+0

感謝您的回覆!我嘗試了你提出的選項。但這裏的問題是父窗口被鎖定。這又是一個問題。我應該能夠打開一個且僅有的一個子窗口,但用戶仍然應該能夠訪問父窗口以進行其他工作。如果錯誤的用戶再次點擊同一個鏈接,請讓他把注意力集中到之前打開的子窗口。 – user1501905

+0

令人驚訝的是,使用showModelDialog在我的情況下表現得非常奇怪。我爲孩子窗口提供的網址是google.com進行測試。一旦子窗口打開,如果我在子窗口中進行谷歌搜索,每當我點擊谷歌搜索時,它會自動打開兩個額外的窗口。 – user1501905

+5

已棄用 - 目前尚未在Chrome或Firefox中使用https://developer.mozilla.org/zh-CN/docs/Web/API/Window/showModalDialog – johnnycardy

4

對於IE10,如果在Internet選項 - >安全 - >安全級別下爲此區域選中啓用保護模式,並且ZONE不同,即在我的情況下,本地文件從Intranet打開彈出窗口時,window.open返回一個NULL引用對象。

window.open返回即使啓用保護模式被選中yoursite.com在彈出的窗口即打開互聯網的時候someothersite.com參考對象>互聯網