2012-08-31 62 views
4

因此,我有一个GWT应用程序,在IE6-8和大多数现代浏览器中都能很好地工作。不幸的是,由于IE9在<select>元素上处理onchange事件的已知错误,在IE9中它几乎不可用。GWT IE9模拟IE8

因此,我们没有将客户降级到IE8,而是让IE9模拟IE8。我把这个元标记在我的GWT主页:

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

当我看到IE9的开发者工具(F12),我看到它的“浏览器模式” IE9和“文档模式”为IE8标准。但是,GWT应用程序无法加载:它在GWT生成的压缩和混淆JavaScript函数之一中给我一个JavaScript错误。我没有能力通过IE调试到应用程序,所以我无法弄清楚这是怎么回事。

我怀疑它与GWT检测正在使用哪个浏览器的方式有关,并为该会话加载适当的资源。

编辑补充:当我尝试使用IE=8,而不是IE=EmulateIE8,开发工具仍然报告IE9/IE9标准模式和所有相同的onchange事件的问题存在,当我在香草IE9运行的。

有没有一种工作方式可以使IE9在http-equiv元标记的模式下模拟IE8标准模式,这与GWT 2.4一起使用?

+0

你有没有试过IE8而不是EmulateIE8? –

+0

@ThomasBroyer - 是的。我已经更新了我的问题。当我使用“IE = 8”,它是[正确的语法](http://msdn.microsoft.com/zh-cn/library/ie/ms533876(v = vs.85).aspx)时,浏览器报告本身就是在标准模式下的IE9,并且相应地表现出来(也就是说,我的应用程序不起作用)。 –

+0

不是很有帮助,但是您试图实现的目标是强制IE9在您的GWT应用程序的IE8兼容模式下工作。哪些可能或可能不会帮助您解决此特定的事件处理问题。我的意思是,它仍然值得尝试,但毕竟不能保证所需的行为。据我所知,兼容模式主要是渲染问题。 – alexp

回答

1

我有类似的问题:IE忽略<meta http-equiv="X-UA-Compatible" content="IE=9">标记(我试图阻止IE8在IE7兼容模式下显示页面)。这是由于没有X-UA兼容meta作为<head>的第一个孩子造成的。我将它设置为<head>的第一个孩子,并在所有内容上添加<!DOCTYPE HTML>,并且工作正常。

+0

谢谢你的建议。我会试试看,并回复它是否有效。 –

+0

不幸的是,它没有工作,我仍然收到JavaScript错误。开发者工具仍然报告浏览器为IE9,尽管文档模式是IE8标准。因此,我非常确定GWT会将浏览器检测为IE9。 –