【问题标题】:IE History Tracking, IFRAMES, and Cross Domain errorIE 历史跟踪、IFRAMES 和跨域错误
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    这永远无法保证,但如果您能说服他们有客观的好处可以降低短期和长期成本,那么值得尝试 - 请记住,对于许多客户而言,他们关心的是业务案例而不是技术案例。

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 2013-07-26
      • 1970-01-01
      • 2020-10-30
      • 2017-09-13
      • 2011-01-26
      • 2016-10-20
      • 2012-03-21
      • 2012-02-14
      相关资源
      最近更新 更多