为什么我的页面在IE9的IE7模式下工作,而在IE7本身却没有?

时间:2011-05-13 14:14:43

标签: javascript jquery html css internet-explorer-7

在IE9的每个浏览器和文档模式(只是兼容模式,但实际的IE7和IE8模拟)中进行了大量测试之后,我最近使用了我们的新主页。该网站适用于每种模式,更不用说现代浏览器了。然而,在它发布后,我收到一封电子邮件,说该网站在IE7中非常破碎。我去了一台废弃的机器并启动了Windows XP,启动了IE7并加载了该页面。令我惊恐的是,布局确实破了! (不只是幻灯片!)

最重要的是,为什么my page在IE7中不起作用,即使它在IE9中以IE7模式运行?而作为次要问题,它可能是“错误的”?

修改:我已经发现我的一个问题可能是幻灯片显示,但添加.ie7 #slideshow {display:none !important}甚至不会隐藏幻灯片。我无法通过CSS访问它。

编辑2 另一个问题仅出现在原生IE7中 - 该主页上的页脚和this page超出无法缩放的微小文字。它不能在IE9的IE7模式(不兼容)或任何其他浏览器中执行此操作。另一个差异的例子。

8 个答案:

答案 0 :(得分:25)

我不知道IE9的IE7兼容模式,但IE8内置的IE7兼容模式众所周知,因为它不是真正的IE7的完美副本。它有大量的bug和怪癖,它们不会出现在正常的IE7中。

很糟糕的是,我永远不会建议任何人实际使用兼容模式来测试他们的网站...除了你仍然需要应对偶尔在他们的实时浏览器上使用兼容模式的用户。因此,MS并没有为开发人员提供更多便利,而是通过添加另一个可能的渲染引擎来实现更加困难。叹息。

我没有尝试过IE9的兼容模式,但是如果你的体验有所改变,那么他们仍然会遇到同样的问题。 MS在第一次犯错误时没有学到这一点,这是一种耻辱(但并不奇怪)。

我不知道使用兼容性模式进行测试,我所知道的最佳解决方案是使用名为IE Tester的应用程序,它允许您同时安装和运行所有版本的IE。它仍然不是完美的(你已经发现,唯一可以完美的方法就是拥有一个真正的IE7自己的真实副本),但它比真正的IE更接近真实的东西。兼容性模式。

答案 1 :(得分:7)

我建议使用HTML5BoilerPlate(http://html5boilerplate.com/)作为灵感和指导的来源。我的情况完全相同:大学的网络开发人员,必须写一个主网站重新设计。

我认为你已根据你的来源做了这个。你使用的是最新版本吗?也许HTML5BoilerPlate模板有一些更新可以解决这个问题。

我发现安装了真正的IE7的同事,果然,你的页面看起来很糟糕。然后我在真正的IE7中查看了我的模型,它看起来很好(我认为我现在非常幸运)。

我的模型也基于HTML5BoilerPlate模板。

另一个建议是尝试注释掉代码块并尝试找出问题的原因。

我认为幻灯片显示是问题的原因(或至少是症状)。我不得不使用3种不同的插件重新实现我的幻灯片内容。目前,我已经为这种内容确定了jQuery循环插件:http://jquery.malsup.com/cycle/

我真的想知道问题的原因。顺便说一句,该网站看起来很棒,当它呈现它看起来的方式。干得好!


查看此MSDN博客帖子:http://blogs.msdn.com/b/ie/archive/2009/03/12/site-compatibility-and-ie8.aspx

答案 2 :(得分:6)

问题似乎是幻灯片显示

浏览script.js文件,我看到了这个

/*
 * Here is the slideshow code.
 */

 // Screw ie7...
if ( !($.browser.msie && $.browser.version <= 7.0) ){

所以我会在那里开始搜索,因为它似乎忽略了IE7及以下..

答案 3 :(得分:6)

下载包含IE 7,8等的free Microsoft Virtual PC和MS的free Hard Drive images ...这就是他们提供这些内容的原因。

似乎有一百万个jQuery幻灯片插件,大多数都与IE 7兼容。

jCarousel是一个,您可以使用CSS更改它,看起来就像现在一样。

This page包含42种各种幻灯片插件。


修改

我还建议在处理其他问题之前将页面放入W3C compliance

答案 4 :(得分:4)

我建议您使用XP Mode避免仿真方法并在计算机上的实际IE7中进行测试。

答案 5 :(得分:1)

首先:始终在实际浏览器上进行测试。如果我们正在谈论ie,请使用虚拟机来测试它。永远不要依赖“兼容模式”,“ies4linux”,“ies4mac”,“只是使用葡萄酒”等。我有很多,但是在不使用虚拟机时会有很多麻烦(您可以在虚拟机上使用快照 - 每个快照都是浏览器版本。这样您只能有一个图像,但有多个浏览器)。

第二:即使您从script.js中删除了幻灯片部分,也会发生此问题吗?在删除该部分并重新加载页面后,如果它不是旧script.js的缓存版本,您是否检查过?有时缓存版本是所有问题的根源。

有点愚弄你的浏览器没有缓存script.js是在从你的标记调用script.js时添加一个任意数字(例如,script.js?v = 100,对于你做的每个修改)你的js,你修改这个数字。你可以检查SO的来源,它在某些部分使用类似的方法)。

第三:在脚本中的“否定”之前尝试做:

alert($.browser.msie);
alert($.browser.version);
alert($.browser.msie && $.browser.version <= 7.0);

...并查看ie是否发出警告或是否引发异常。有时ie会尝试解释你的javascript,并无缘无故地引发一个未知的异常:如果你没有在try / catch块中捕获它,那么一切都将从那一点到脚本结束。

我知道,这是一种试错法,但我们必须隔离所有内容并尝试准确理解导致错误的原因。如果需要,请在幻灯片部分重复第三条建议。

答案 6 :(得分:0)

Alrgiht,这可能就是你要找的答案。转到F12开发人员工具并单击 IE9浏览器模式 IE7文档模式这将是IE7标准,但是IE9使用者。如果这不起作用,请尝试使用IE7浏览器模式和文档模式。

答案 7 :(得分:-2)

我和其他人说,可能的罪魁祸首是幻灯片。我会得到一个更友好的CSS幻灯片:

http://flowplayer.org/tools/index.html

绝对可以在ACTUAL浏览器中测试!您可以使用browsershots.org等在线浏览器检查网站。他们花了很长时间来制作你网站的镜头,但这是准确的。