旧版 IE 升级提示跳转代码

此代码是 旧版 Internet Explorer 淘汰行动 一部分,如需查看项目介绍请点击链接查看,本页只介绍弹窗代码。

跳转代码

把这段代码添加在网站头部代码<head>之后,当IE11以下版本浏览器(包括使用IE11以下版本内核的浏览器)访问网站的时候将自动跳转到浏览器升级提示页面。提示页面可点击“IE浏览器升级提示页”预览。

<meta name="renderer" content="webkit"/>
<meta name="force-rendering" content="webkit"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<script>/*@cc_on window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/</script>

网站在没有兼容的低版本IE中往往都是错版,所以检测到是低版本IE时直接跳转到升级页面,节省了不必要的资源加载,降低了网站服务器开销。去除冗余字符之后,便有了这段简洁优雅的代码。

关于前置代码

这一段代码至关重要。因为部分浏览器内置 Chromium + IE 双核,如果任其自由选择内核,可能会选择使用 IE 内核,导致明明有 Chromium 内核却不兼容。所以,我们需要通过代码告诉双核浏览器使用 Chromium 内核。

<meta name="renderer" content="webkit"/>

以上这段代码作用于360浏览器、QQ浏览器等国产双核浏览器,意思是默认优先采用极速模式,即 Chromium Webkit 内核。需要注意的是,此代码并非总是有效,当你的域名是 gov.cn 或 edu.cn 结尾时,或当你的网页内容存在类似“IE9.0或以上浏览器访问达到最佳效果”的提示时,此代码将失效。

<meta name="force-rendering" content="webkit"/>

以上这段代码作用于其他双核浏览器,意思与上一段相同。

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

以上这段代码作用于IE浏览器,意思是当IE浏览器识别有 Google Chrome Frame 插件,则采用 Webkit 内核,否则采用最新IE内核。

关于条件判断

if IE 条件注释只支持到 IE9 ,所以如果提示升级的版本包括 IE10 需要使用JS代码进行判断。但由于 IE11 UA 规则已改变(特征里不带 MSIE ),所以判断是否 IE10 及以下只需要按这个规则进行匹配即可。以下是例子:

所有IE访问都提示升级(包括IE11、IE10、IE9、IE8、IE7、IE6):

条件编译 @cc_on 是IE10及旧版IE特有,documentMode 是全部IE特有,通过这两个判断就算IE修改了UA也能准确识别出。

<script>if (/*@cc_on!@*/false || (!!window.MSInputMethodContext && !!document.documentMode)) window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); </script>

IE10、IE9、IE8、IE7、IE6及以下版本提示升级:

方法一,条件编译 @cc_on 是IE10及旧版IE特有,因此可用于判断是否除 IE11 以外的其他IE浏览器。推荐此方法,但需要注意,如使用自动过滤注释,添加升级提示代码后,要检查确认有没有被过滤器误删,如被删可修正过滤规则或考虑使用方法二。

<script>/*@cc_on window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/</script>

方法二,通过UA判断。

<script>if (navigator.appVersion.match(/MSIE [0-9]+/)) window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); </script>

IE9、IE8、IE7、IE6及以下版本提示升级:

<!--[if lte IE 9]><script>window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(location.href);</script><![endif]-->

IE8、IE7、IE6及以下版本提示升级:

<!--[if lte IE 8]><script>window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(location.href);</script><![endif]-->

IE7、IE6及以下版本提示升级:

<!--[if lte IE 7]><script>window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(location.href);</script><![endif]-->

一个完整的HTML示例

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8"/>
    <meta name="renderer" content="webkit"/>
    <meta name="force-rendering" content="webkit"/>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"/>
    <script>/*@cc_on window.location.href="https://support.dmeng.net/upgrade-your-browser.html?referrer="+encodeURIComponent(window.location.href); @*/</script>
    <title>网页标题</title>
    <!-- 其他meta标签 -->
</head>
<body>
    <h1>网页内容</h1>
</body>
</html>

技术参考资料

Copyright © 2014 End of IE SUPPORT. All Rights Reserved