【发布时间】:2020-02-25 16:15:23
【问题描述】:
我目前正在开发一个用 Flex(基本上是 Flash)制作的旧应用程序,它仍然需要在 IE11 中工作(我知道......我知道)。这个 webapp(我们称之为 A)公开了一个可从 JavaScript 调用的方法。 A 还有一个按钮可以打开一个新的浏览器窗口(称为 B)。 B在“beforeunload”事件上有一个监听器:当用户要关闭B时,B必须调用A中的JS方法。希望我解释得对。使用带有参数“--disable-web-security”的 Google Chrome 执行 A 中定义的方法,我们对此感到满意。我们使用以下指令:
window.opener.document.getElementById('flashAppID').methodName();
我们面临的问题是IE11在B试图执行A中的JS方法时抛出如下异常:
{
[functions]: ,
__proto__: {
[functions]: ,
__proto__: {
[functions]: ,
__proto__: null
},
message: "",
name: "Error"
},
description: "Authorization denied",
message: "Authorization denied",
name: "Error",
number: -2146828218,
stack: "Error: Authorization denied
at callOpener (http://domainname.ext/pageB.html:18:21)"
}
我们尝试禁用 IE 中任何可能的安全限制,但没有成功;有没有人建议如何避免这种异常?
提前致谢。
【问题讨论】:
-
尝试对该站点使用 HTTPS 协议。如果它在其他域上,请尝试在 IE 选项、安全选项卡中启用“跨不同域导航窗口和框架”和“允许跨域数据源”选项。出于测试目的,降低 IE 的安全设置并保持所有安全区域的设置相似。然后再次尝试测试问题。
-
感谢您的关注。两个页面都在同一个域中。正如我所写,我们已经尝试降低 IE 的所有可能的安全设置。我要问我们是否可以使用HTTPS。我会告诉你的。
-
让我们知道您的测试结果。我们将努力提供进一步的建议。
-
我一定会的。请注意,在没有 Flash 应用程序的页面中测试行为时,会执行 JS 方法。所以我们可以推断,当从辅助窗口调用该方法时,IE阻塞了JS和Flash之间的交互。
-
如果您在组织中运行此代码,请询问您的 IT 部门是否应用了导致此问题的任何安全策略。如果可能的话,您还可以尝试在组织外部测试相同的问题以验证结果。它可以帮助缩小问题范围。
标签: javascript flash actionscript internet-explorer-11 window.opener