2010-06-23 175 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