24

我只想允许使用 IE8(不是 IE6、IE7)或其他浏览器的用户在登录时访问我的网站。

我关注了:http ://code.google.com/p/ie6-upgrade-warning/ 但我也希望它不允许 IE7 用户在登录时使用主站点(他们可以查看公共页面。)原因是主 Web 应用程序有很多 JavaScript 效果,只能在 IE8 呈现模式(或除 IE 之外的任何其他浏览器)下 100% 工作。

将 ie6 升级警告修改为 ie7 的问题在于,它看起来像 IE8 以 IE7 呈现模式显示我的网页,并且“谎报”为 ie7 并触发 IE7 样式表代码。

那么如何强制 IE8 始终以 IE8 模式呈现我的页面?

4

13 回答 13

24

使用这个标签:

<meta http-equiv="X-UA-Compatible" content="IE=8" />
于 2009-05-04T23:19:44.170 回答
14

更正 AdamSane 的示例:

<!--[if lt IE 8]> Special instructions for IE 7 or less here <![endif]-->

于 2009-05-04T23:00:52.967 回答
11

这是一个很好的链接,建议一些解决方案

http://garmahis.com/tools/ie6-update-warning/

我个人喜欢第四个解决方案(http://www.browser-update.org/

只是小菜一碟

于 2011-07-27T15:25:03.370 回答
4

出于安全原因,我个人建议用户升级 IE。我会使用条件注释来定位 IE8 以下的浏览器。

      <!--[if lt IE 8]>You are using an outdated version of Internet Explorer.  For security reasons you should upgrade your browser. Please go to Windows Updates and install the latest version.<![endif]-->

这条信息应该不显眼但优雅。您还应该使网站可供那些无法升级浏览器的人使用。

于 2011-09-04T21:01:03.677 回答
4

我没有尝试强制 IE 8+ 模式,而是结合使用条件注释和简单的 javascript 检查。该document.documentMode属性是在版本 8 中添加到 IE 中的,因此如果它存在(无论值如何,尽管此代码必须为 7),这意味着我们处于兼容模式并且不应显示警告:

<!--[if lte IE 7]>
    <script>
        if (!document.documentMode) { //if documentMode exists, this is a later IE in compatibility mode
            showBadBrowserMessage();
        }
    </script>
<![endif]-->
于 2012-02-15T16:10:32.813 回答
4

这是适用于所有旧浏览器的酷脚本:

<script type="text/javascript"> 
    var $buoop = {vs:{i:7,f:5,o:12,s:5,n:9}}; 
    $buoop.ol = window.onload; 
    window.onload=function(){ 
     try {if ($buoop.ol) $buoop.ol();}catch (e) {} 
     var e = document.createElement("script"); 
     e.setAttribute("type", "text/javascript"); 
     e.setAttribute("src", "//browser-update.org/update.js"); 
     document.body.appendChild(e); 
    } 
</script> 

注意:如果访问者忽略了该建议,它将在一段时间内不会再次出现。

更多可以找到:这里

于 2014-01-22T21:47:14.153 回答
1

取决于您如何编写 (X)HTML,但如果您有严格的文档类型,IE8 应该使用标准模式(而不是 IE7 模式),例如:

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

在 HTML 文件的顶部。

XHTML 1.0 规范 - 严格符合文档

这是一篇关于不同 doctypes/etc 如何影响 IE8 的呈现模式的好文章:Understanding Compatibility Modes in Internet Explorer 8

于 2009-05-04T22:59:36.387 回答
1

如果他们使用的是旧版本的 IE,最好的方法可能是检测用户的浏览器 User-Agent 字符串并将他们重定向到要求他们升级(或下载不同的浏览器,如 firefox 或 chrome)的页面。您可以在此IE 开发人员博客条目中查看 IE 7 和 8 的用户代理示例。旧版本的 IE 遵循类似的模式。

但是,您不应该做的一件事是假设任何不遵循特定模式的用户代理字符串都是无效的。只需检查 MSIE ([0-9]) 并查看它是否在范围内;如果它完全丢失,则假设浏览器受支持。如果是 MSIE 7,则进一步检查指示兼容模式的 Trident 标记(并且,我想,请用户将其关闭)。这将允许其他未来的新贵浏览器有机会呈现您的页面,而无需将它们拒之门外:)

于 2009-05-04T23:13:31.860 回答
1

如前所述,我建议实现此目的的最佳方法是使用条件注释来包含特定于 8 之前的所有 IE 版本的样式表:

<!--[if lt IE 8]> Include CSS here <![endif]-->

包含的 CSS 可以将警告设置为可见,或者在页面上启用“锁定”用户的覆盖。包含一些隐藏页面上重要元素的规则可能是个好主意,否则如果它们不能按预期工作,可能会使用户感到困惑。

您的另一个选择是将用户重定向到另一个页面 - 我不是重定向的忠实粉丝,但如果小心使用它们可能是一个合适的解决方案。

您是否考虑过为什么要将大量用户锁定在您的网站之外?也许您应该花时间研究如何优雅地降级您的 JavaScript,或者反过来;使用 JavaScript “逐步增强”。

另一方面,您可能可以控制使用您的站点的组织使用的系统,在这种情况下,您可能可以阻止人们使用非标准系统。

于 2009-05-04T23:20:05.510 回答
0

您可以使用 CSS 条件注释

<!--[if IE 8]>
Special instructions for IE 6 here
<![endif]-->
于 2009-05-04T22:58:40.147 回答
0

使用 javascript 您可以询问哪个浏览器发送了请求>

<script type="text/javascript">
function detectBrowser()
{
var browser=navigator.appName;
var b_version=navigator.appVersion;
var version=parseFloat(b_version);
if (browser=="Microsoft Internet Explorer")
  && (version>=8))
  {
  alert("Your browser is good enough!");
  }
  else
  {
  alert("It's time to upgrade your browser!");
  }
  }
 </script>
于 2009-05-04T23:06:55.120 回答
0

这个聚会结束了吗?><

是的,但我认为这里的信息可以更新一点。

按照今天的标准,“今天”是 2013 年 10 月 29 日,您可以使用此元标记来触发最新的 IE 浏览器和文档模式,并触发在旧 IE 中安装 Google 的 Chrome 框架:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

这允许您服务器特定的 IE6/7 样式。请记住,我说的是“样式”而不是“样式表”,意思是:您只使用一个 CSS 文件,其中包含您所有的 IE6 和 IE7 样式。这是为了尽量减少 HTTP 请求……但那是完全不同的对话。

无论如何,使用上面的代码片段就不需要脚本或条件注释。

注意: Google Chrome Frame 将于 2014 年 1 月停用 -更多信息请点击此处

于 2013-10-29T19:13:16.257 回答
-2

您从您的网站“禁止”IE 6 和 7 用户的想法是荒谬的。很多人因为工作限制或不知道如何升级浏览器或安装另一个浏览器。从长远来看,禁止这些人使用您的网站只会让您的用户付出代价。

要么修复你的 JavaScript,解决问题,要么优雅地降级,以便网站即使关闭也能正常工作。

编辑:我在下面的评论中发布了更多信息,这些信息应该在这篇文章中:

通常可以检测到 IE 并解决它。天啊,你甚至可以使用条件注释来加载不同版本的 JavaScript。使用 JS 框架会将浏览器之间的差异抽象到您无需担心的程度。或者只是抓住IE7.js并将其粘贴在网站上 - 我听说它可以让您难以置信的工作。

于 2009-05-04T23:01:37.397 回答