使用Internet Explorer的兼容模式的缺点

时间:2011-05-25 13:16:06

标签: javascript internet-explorer cross-browser internet-explorer-9 ie8-compatibility-mode

在IE浏览器中以兼容模式查看的网站是什么?假设我们强制IE9为IE8 compatiblity mode

  • 性能缺陷
  • 无法使用任何新的IE9特定功能,如HTML5 / CSS3 / SVG

为什么?

我们运行自2000年以来开发的传统网络应用程序,所以这是一个混乱的球,与Chrome,Opera,Firefox,IE6 / 7/8兼容,现在我们决定将IE9添加到列表中。但是对于IE9,我们遇到了打印问题,“Permission deniend”JavaScript错误(可能是关于跨框架JavaScript调用的问题)和下一个问题 - 简单的解决方法是强制IE9表现为IE8,然后一切正常。但是我仍然不确定它是否可以......

5 个答案:

答案 0 :(得分:2)

  

首先我们的应用是公共网站(针对我们的客户)

您有一个2000年开发的公共网站,它不适用于现代浏览器?弃用它或重写它。

不要破解您的代码以支持现代浏览器,该网站显然写得不好而且不适用于标准。 你无法逃避这一点。

唯一可以解决此级别不兼容问题的地方是Intranet应用程序,即使这样,您也应该简单地声明“它适用于浏览器X,并使用它”

你不能对那些面向公众的客户这么说。我的意思是你可以试试,但是对于竞争对手失去业务很有乐趣。

重新开发您的网站以符合W3C HTML / CSS标准和ES5标准,这将完全面向未来(多年)。

唉,网络运作的方式是,任何超过 5岁的东西都会被弃用。所以要么每5年重新写一次,要么退出网络业务。

在实际使用兼容模式方面,请不要这样做。 IE6-8是可怕的引擎,应该像瘟疫一样避免。如果您使用它们,那么您就无法编写面向未来的标准兼容代码。

您的代码需要符合标准,您应修复/填充/修补任何浏览器特定的错误,这些浏览器不实施标准

答案 1 :(得分:1)

在您对这些不同版本进行测试之前,您不能说您已经在IE6 / 7/8/9中进行了测试。模拟测试环境与使用测试环境不同。据我所知,IE7 / 8兼容模式是较旧的渲染引擎,而不是整个底层浏览器,bug和所有。它是封闭源,所以你永远不会知道。

将Microsoft免费转换为下载虚拟磁盘映像以进行跨浏览器测试,并将其放置在运行Virtualbox的计算机上。一台旧机器会运行,无头运行VM并使用远程桌面访问它们。通过这种方式,您将能够在所有浏览器中进行测试,而不会给您的机器带来MS /间谍软件负担。

答案 2 :(得分:1)

我相信您的系统管理员可以使用组策略编辑器将IE设置为所有Intranet流量的兼容模式。您创建的任何网站都将从此时开始,您可以添加元标记以强制IE9本地呈现并使用所有较新的功能......

我必须在我的当前项目中使用标题中的以下doctype和meta标记执行此操作:

<!DOCTYPE HTML >

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

答案 3 :(得分:1)

MS兼容模式是MS为人们提供升级其应用程序的机会,而不是长期使用。 AFAIU。

如果您希望您的应用程序与IE9兼容,那么您将不得不进行更改。如果你试图保持IE6-9兼容性,那么你有一个真正的挑战,你应该考虑这是否真的实用 - 实质上,你需要至少2个不同的html集。这对你有用吗?

IE9兼容模式与IE9和IE8不同 - 它从两者中获取位。所以你需要对兼容模式版本做一个完整的测试,并确保它仍然可以解决这个问题。

所以在回答这个问题时,缺点是你不是IE9兼容的,并且当IE10出现时,你的代码不会在任何模式下运行。您正在努力进行兼容性测试,而不会提供未来的更改。从长远来看,你会做得更好,使你的代码IE9兼容。此外,您给客户的信息是您的代码库不会兼容更长时间。除非你和他们谈论重新工作,否则这是一个真正的负面因素。

然而,听起来你的整个代码需要重新工作,忘记IE6并为现代工作浏览器编写。使用兼容模式直到发生这种情况可能没问题。如果你这样做 - 并告诉你的客户 - 那么保持兼容模式是可行的。

答案 4 :(得分:0)

使用兼容模式不会导致浏览器使用旧版IE中的JavaScript引擎。

我的意思是它将使用IE9引擎运行任何JavaScript代码。在调试IE7 / 8出现问题的旧产品时,这对我们来说是一个问题。