【发布时间】:2011-02-26 22:57:36
【问题描述】:
所以这就是交易。我们有一个在 HTML 文件中运行的 Flash 应用程序。对于一个页面,我们称其为 IFRAME 中的 ASP.NET 中的遗留报告系统。然后,此页面使用跨域脚本与 Flash 应用程序进行通信(在两个页面中都设置了 document.domain = "domain"。
这一切都有效。
现在是踢球者。 Flash 启用了历史跟踪。这会加载 history.js 文件,该文件创建了一个 div 标签来存储页面更改,因此后退和前进按钮可以在浏览器中使用。
这适用于创建 div 标签的 Firefox 和 Chrome。
但是
在 Internet Explorer 中,history.js 创建另一个名为 ie_historyFrame 的 IFRAME(而不是 DIV)。当 ScriptResource.axd 代码尝试通过以下方式访问它时:
var frameDoc = this._historyFrame.contentWindow.document;
我们收到“拒绝访问”错误消息。啊!
- 我们已尝试获取此 IFRAME 的句柄并插入 document.domain 代码。失败。
- 我们已尝试编辑 flex 也用于包含 document.domain 的 historytemplate.html 文件...失败。
- 我试图编辑底层 ASP.NET 页面禁用历史记录 在 ScriptManager 中跟踪 控制。失败。
我对此一无所知。我们有用户需要使用 IE 访问本网站。他们是大客户,我们不能告诉他们只使用 Firefox。
任何建议将不胜感激。
【问题讨论】:
-
您需要Flash应用中的历史管理吗?是否被使用?您可以使用编译器参数禁用它。
-
为什么将
document.domain=代码添加到ie_historyFrame失败?
标签: flash internet-explorer cross-domain browser-history scriptresource.axd