【问题标题】:Can i over-ride IE enterprise mode from HTML?我可以从 HTML 覆盖 IE 企业模式吗?
【发布时间】:2018-09-07 06:55:42
【问题描述】:

我正在尝试运行D3 Visualisation。我将我的 HTML/CSS/JS 托管在运行 IE 企业的内部公司共享点站点上,这迫使我从 IE11 进入每个控制台的 IE8 环境:

HTML1122: Internet Explorer is running in Enterprise Mode emulating IE8.

我的理解是 IE8 根本不支持 d3 SVG 图形。我尝试在<head></head> 部分的最顶部使用此元标记覆盖,但无济于事:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

我怀疑我可以更改浏览器设置。有没有其他方法可以覆盖我的 HTML?

这个question 似乎解决了同样的问题。但如果不是网络管理员,则无法提供解决方案。我将无法将我的站点从企业模式列表中删除。所以希望能进一步探索潜在的解决方法..

【问题讨论】:

  • 如果您将 d3 网页嵌入到企业模式文档中,它将采用父文档模式...。在弹出窗口或新窗口中打开指向 d3 文档的链接。他们将使用 meta x-ua IE=Edge 然后... 使用 f12>Emulation 选项卡来确认 d3 文档正在使用 meta x-ua 值。

标签: html internet-explorer d3.js svg


【解决方案1】:

你的理解是正确的; D3 无法在 IE8 中运行。

不幸的是,您还被公司设置卡住了,如果您的元标记不起作用,那么您将无法覆盖它们。

解决方案:

  1. 在您的公司网络之外托管网站。 强制 IE8 模式的设置仅适用于网络内的站点,因此如果您的站点托管在外部,那么 IE11 的行为将与 IE11 一样,并且与其他外部站点一样。如果您无法将其完全托管在网络之外,您的防火墙可能会为您提供一个您可以使用的 DMZ,或者您可以使用代理,其中任何一个都允许该站点出现在网络之外,这将具有效果一样。

  2. 使用不同的图形工具
    D3 与 IE8 不兼容,因为它使用 IE8 中不可用的 SVG。但是,IE8 确实包含一种称为 VML 的专有矢量图形语言,它实际上与 SVG 相同。许多较旧的 SVG 库(例如 Raphael)通过在 VML 和 SVG 中实现其功能来支持 IE8。我已经有一段时间没有使用 IE8 了,所以我无法评论其中任何一个的最新版本,但当时 Raphael 确实对我很有效。

  3. 使用兼容层使 D3 工作 存在一个名为R2D3 的库,它是明确编写的,旨在增加 IE8 到 D3 的兼容性。它完全按照上述操作,并将 D3 的 SVG 输出转换为 VML。但是,正如您将在我链接到的项目页面上注意到的那样,这是一个死项目,作者绝对不支持,以至于他们明确告诉您不要使用它。

【讨论】:

  • D3 core 本身并不“使用” SVG,而是旨在促进其在 Web 项目中的使用。因此,Mike Bostock 从一开始就决定不开发兼容 IE8 的库。使 D3 数据绑定失败的原因是使用了 ECMA 5 构造(主要是数组方法),它可以用 polyfill 修复。简而言之:只要避免使用 Axes 或 Chords 等 SVG 可视化模块,D3就可以与 IE8 一起使用。
  • @ccprog - 感谢您的澄清。我不知道那个细节。我想知道,使用旧版本的 D3 是否有帮助? (也就是说,这个问题确实表明他正在使用可视化,所以这可能是一个有争议的问题)。
  • 很久没有研究这些问题的细节了,但我怀疑 v4 中引入的模块化实际上有助于避免 SVG 部分。另外,我刚刚翻了一些旧的Readmes,发现另外一个问题是Selectors API的使用,所以Sizzle可能也需要。
猜你喜欢
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多