2010-06-23 129 views
2

我有一個應用程序,它使用下面給出的window.open(url)啓動一個彈出窗口。window.opener.location.href在WIN8中IE8發生故障

function goRelURL(){winObj = window.open(url,「w1」); winObj.focus(); }

從彈出我點擊一個按鈕關閉彈出。點擊一個方法被調用,從那裏我設置父窗口的URL,並關閉彈出窗口爲:

window.opener.location.href ='<%= url%>'; window.close()的;

這與WIN6X的IE6,IE8和Firefox3.0正常工作。但它在IE8和Windows-7中失敗。與贏7,它設置彈出的URL和彈出保持打開狀態。

任何幫助表示讚賞。

+0

呀已經看到這一點我自己,什麼是奇怪的是,它在調試模式而不是當我關掉調試並刷新頁面。我得到一個腳本錯誤window.opener.locaton爲空或不是對象 – PJUK 2011-03-18 15:27:05

回答

0

我也有類似的問題,我們的聯網網站召喚出互聯網上的第三方訂購系統,並有一些數據回傳等,以及這個電話鍵調用頁面的刷新和全過程。在安全區域之間切換時,只有在Windows 7和IE8出現問題時,如果安全區域相同,則不會發生。

基本上這個問題似乎是IE8不再允許你在不同的安全區域內的站點之間發送數據,它失去了window.opener的軌道,它似乎並不重要你實際上有什麼安全設置只要2個站點在其中。

所以我原來的「解決方案」的建議是

在Windows 7和IE 8的下 的Internet選項更改設置 - >安全 - >啓用保護模式(需要重新啓動IE)將允許這再次合作,雖然至於爲什麼以及其他副作用我還沒有發現。

這對你運行的每個站點都有明顯的影響,我的假設是,這使得它恢復了以往的習慣,儘管我仍然不完全明白爲什麼打開保護模式==「禁用系統關鍵安全功能「,確實啓用保護模式應該受到更多的保護或者它的命名設置很差!

無論如何,無論您通過將互聯網上的網站添加到您的受信任網站並將其視爲內聯網網站,都可以獲得相同的「修復」。反之亦然,問題在於保護模式的改變。

我也有一些成功的運行在同一窗口內的網站 - 雖然我覺得我和重新編碼只設置窗口位置並取消window.opener的需要。

+0

副作用是要禁用一個重要的安全功能。此外,這不應該居然連幫助,除非你的主窗口和彈出窗口在不同的安全區域(例如,一個內網,互聯網一個)上運行 – EricLaw 2011-03-18 16:21:04

+0

副作用不談,假設一個面向公衆的網站,該解決方案不能擴展.. – 2011-05-04 21:41:54

+0

這是微軟,你期望什麼? http://en.wikipedia.org/wiki/TradElect – boatcoder 2014-05-27 18:58:43