2011-04-27 73 views
1

我有一个用Java编写的应用程序和一个基本上用javascript编写的web应用程序。我在IE7上运行,没有问题。但最近,我升级到IE8,从那以后我遇到了很多问题... 无论我使用哪个版本的jquery,它崩溃。我没有任何javascript错误消息,但CSS和其他方法没有被使用... 我在StackOverflow上找到了一个类似问题的家伙,他把这个添加到他的头文件中:<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 确实,它适用于我,但我不知道我的网页上发生了什么变化。这个元素是否仅改变了对CSS的解释? Javascript?jquery IE问题

谢谢您的回答

+0

这需要更具体的信息。究竟发生了什么样的事情? “崩溃”是什么意思? – 2011-04-27 10:02:19

+0

这个问题很可能在你的javascript中。先把事情弄清楚,直到它不再崩溃,然后进一步隔离问题。这很可能不是jQuery代码,但你 – Evert 2011-04-27 10:02:38

+0

感谢这样的解释......这将是奇怪的,我在IE7上的JavaScript工作得很好,但不要在IE8上......我要进一步看看,但我怀疑IE是无辜的... – Celero 2011-04-27 10:07:03

回答

0

X-UA-Compatible是微软对IE浏览器进行渲染开关为站点模式。公司升级IE安装的主要问题是与在旧版本IE上运行的Web应用程序的兼容性。这个元标志用于告诉IE的新版本如何处理当前文档。

在你的例子中,X-UA-Compatible值告诉IE模拟IE7渲染。如果用户使用IE8访问您的站点,它将看到此标志并切换到IE7兼容模式并模仿其功能。您可以在MSDN上的Defining Document Compatibility上阅读更多信息。但是,如果你的JS打破了浏览器,那么你应该修复它,而不是依靠这种廉价的黑客(在我看来)。虽然对于快速修补问题很有帮助,但不能保证它始终能够正常工作,并且在其他浏览器中可能遇到不明白X-UA-Compatible的问题,这些问题属于IE专有。

如果您努力从源头解决问题,也许您可​​以在此发布一个新问题,供SO用户查看。

0

刚添加的meta告诉IE使用IE7的JavaScript和渲染引擎,即使它是浏览器的更新版本。 MS实现了这样的头部以避免破坏依赖于该版本特定行为的网站。正如Evert提到的那样,这很可能是你的代码中的一个错误,但是如果有更多的信息很难说什么是原点。我会打开IE的调试器(F12),并试图找到“崩溃”的行。

如果CSS也失败(未加载),请检查您用于链接到CSS/JS文件的路线。类似于在路径中使用'\'而不是'/'可能会在IE6/7中工作,但不会在更新的版本中使用(因为它们更严格),而未转义的字符也可能发生同样的情况。另外,请检查您的应用是否使用正确的内容/类型提供文件。

0

当IE看到X-UA-Compatible元标记时,它使用它来确定页面的呈现模式。

IE8带有一个内置的向后兼容模式,允许它回退到在IE7模式下渲染页面。这个元标记是IE用来告诉它使用这种模式的。

这个想法是,如果您的页面在IE7中工作,但不在IE8中,那么添加此标记将允许您的页面在用户升级时继续工作。

一般来说,这是事实,但值得指出的是,IE8中的IE7模式与真正的IE7浏览器并不相同:它有一些自己的怪癖和错误,它们不会出现在IE7中。

除了在元标记中指定呈现模式外,还可以从浏览器中指定呈现模式。在IE8中,如果按F12获取开发人员工具窗口,则可以从此处更改呈现模式。这使您可以查看网站正在使用的模式。它也将允许您测试更改模式是否有帮助,而无需实际添加元标记。 IE8还有一个配置设置,可以指定默认为Intranet站点的IE7模式,而不需要元标记。

但是,毕竟,我还会说兼容模式​​可能不是解决问题的最佳方法。您声明该应用程序崩溃。你没有真正描述崩溃的细节让我在这里诊断它,但你确实提到了JQuery。关于JQuery的一件事就是明确设计用于所有浏览器的所有版本;我有兴趣看看到底发生了什么问题,但我怀疑JQuery本身是否有问题。

请提供更多有关您的错误的信息,也许我们将能够帮助您(虽然我会建议开始一个新的问题,因为这个主题将与此不同)。