asp.net - 带有JavaScript window.open()的奇怪IE7行为

标签 asp.net javascript internet-explorer

已知以下代码在三周前可以正常工作。在此期间,我们已经安装了IE 7和许多安全补丁。最终的问题将是,有人知道如何恢复旧的行为吗?

情境

我们在网页1中拥有以下JavaScript代码(我们将其称为foo.aspx),只需单击一次按钮即可调用:

window.open("http://Foo/App2/bar.aspx, "_blank", "titlebar,status,width=650,height=600");


然后,第二个网页(bar.aspx)应该在foo.aspx上打开。用户执行一些操作,然后单击按钮bar.aspx使用JavaScript通过window.opener.document将来自bar.aspx的一些值写回到foo.aspx的字段中,分别寻址每个元素并修改其innerText。然后,用户关闭bar.aspx,并在其中保留foo.aspx,但现在它在某些字段中具有bar.aspx的值,并且用户使用foo.aspx可以愉快地前进。这已经工作了两年多了。

在过去的两周中,我们应用了许多安全补丁并升级到IE7。现在的行为是这样的:


如果我正在测试并且直接导航到foo.aspx,则单击按钮bar.aspx会打开,然后焦点突然切换回foo.aspx,并弹出一个对话框,其中显示“您正在查看的网页正在尝试关闭窗口您是否要关闭此窗口?“如果选择“否”,则foo.aspx仍然有效,我必须先Alt-Tab才能返回bar.aspx,然后一切都像以前一样工作。但是,这将给用户带来痛苦。注意:foo.aspx或bar.aspx中的任何地方都无法调用close()方法!所以我不明白为什么弹出窗口说的是它的意思。
如果我通过应用程序访问foo.aspx,这意味着它已通过编程方式打开,而不是由用户显式打开,则bar.aspx打开,您会看到foo.aspx在其后消失(关闭)。然后,因为window.opener不再可用,bar.aspx收到JavaScript错误。


方案1不是最佳方案,但至少是一种有效的解决方法(如果某种程度上是用户培训问题,需要培训他们先打“ No”,然后再按Alt-Tab,在这之前都没有发生过。方案2是考虑到bar.aspx的全部目的是将这些值写回到foo.aspx,因此在极端情况下不是最优的。

其他注意事项


既然我们已经安装了IE 7,并且随后进行了Active Directory策略更改,则该行为正在发生,甚至在IE 6上也是如此。
foo.aspx和bar.aspx都在Web服务器上,同一网站上但在不同的虚拟目录中运行。这些是内部应用程序,只有经过身份验证的用户才能从我们的网络内部访问。
将服务器置于Intranet区域(通常位于该区域)或受信任的站点中没有任何区别。我在区域或高级设置中都看不到任何适用于此行为的设置,并且Intranet和“受信任的站点”区域在策略上都设置得极为宽松,尤其是在脚本行为方面。
我可以在bar.aspx及其客户端脚本中进行所需的任何更改,但仅限于只能更改foo.aspx中的按钮单击JavaScript代码(该页面由供应商提供,而bar.aspx由内部开发)。
我重申,除了通过window.opener.document更新外,bar.aspx并未触及foo.aspx,当然也没有尝试对其调用close()。


因此,问题仍然存在于IE 7中,或更可能是在安全补丁中,会破坏这一点吗?我们有一家姊妹店,它们在IE 7上运行相同的代码,而他们尚未报告此问题。因此,似乎必须要考虑到环境问题,现在我一直认为它必须是已应用的补丁。我会写一篇KB文章,IE设置,注册表修改,JavaScript更改或其他任何方法来解决此问题。

感谢您提出的所有建议。

最佳答案

它可能是拼写错误,但示例代码中的bar.aspx之后缺少“”。

关于asp.net - 带有JavaScript window.open()的奇怪IE7行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/478148/

相关文章:

JavaScript 将原始对象与对象子数组结合起来

php - 将 php 变量传递给 jQuery flot 饼图

javascript - ie8/9 中的 jquery ajax 调用不起作用

jquery - jQuery选择器在Windows Phone 7上不起作用

c# - 安全的跨域表单提交

asp.net - ASP.NET Web应用程序中的菜单

javascript - 在 Angularjs 中使用列表会破坏 ng-click

javascript - 在 Internet Explorer 中调试 JavaScript 时浏览器无法交互

c# - 测量一个函数所用的时间,不明白为什么时差是负的

javascript - 使用jquery在iframe中捕获鼠标右键单击事件