0

所以这是交易。我们有一个在 HTML 文件中运行的 Flash 应用程序。对于一个页面,我们在 ASP.NET 中称为 IFRAME 中的遗留报告系统。然后,此页面使用跨域脚本与 Flash 应用程序进行通信(在两个页面中都设置了 document.domain = "domain"。

这一切都有效。

现在是踢球者。Flash 启用了历史跟踪。这将加载创建 div 标记以存储页面更改的 history.js 文件,以便后退和前进按钮在浏览器中工作。

这适用于 Firefox 和 Chrome,因为它们创建了一个 div 标签。

然而

在 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。

任何建议将不胜感激。

4

2 回答 2

0

我知道这是最后的方案,但您应该考虑提出 IE 可能无法支持的情况。您将需要客观的证据、一些清楚地表明问题的示例,以及关于保持标准兼容而不是专门针对(可能过时的)IE 版本编码的好处的经过精心排练的语言。

它永远无法保证,但如果你能说服他们有客观的好处可以降低短期和长期成本,那么值得一试——请记住,对于许多客户来说,他们关心的是商业案例而不是技术案例.

于 2010-06-10T18:03:12.147 回答
0

不确定,但从服务器发送此标头可能有效:

// in PHP...
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"',true);

我用它在 iframe 中从 JS 代码设置 cookie。

于 2010-06-13T16:39:28.900 回答