阻止IE用户加载网页


Prevent IE users from loading a webpage

我是一名C++开发人员,正试图交付他的第一个PHP/HTML5/CSS3项目。我不熟悉浏览器兼容性问题(尤其是IE),我在linux盒子上做CSS的东西。现在项目已经完成并准备交付,但发现并没有CSS代码在IE上工作。

我在谷歌上找到了IE7.js、CSS3 Pie和其他java脚本技巧,但没有人能成功解决所有问题。因此,我试图找到一种方法来防止用户加载旧IE版本的内容。

此脚本(或条件注释)应将用户重定向到一个自定义页面,指示他们必须下载并安装IE 10或更高版本,或现代浏览器。

我试着把这个代码放在页面的末尾:

<!--[if IE]>
 <?php 
 header( 'Location: http://www.foo-bar.com/please-use-a-browser.html' ) ; 
 ?>
<![endif]-->

但没有重定向。

欢迎任何其他建议。

放在页面末尾的代码不起作用,因为它是在客户端计算的,而PHP是服务器端语言。因此,当客户端解析用户是否使用IE时……不会发生任何事情,因为PHP没有为运行时输出任何浏览器可以阅读和理解的"指令"。

header( 'Location: http://www.foo-bar.com/please-use-a-browser.html' ) ;替换为:

<script>
     window.location.replace("http://stackoverflow.com");
</script>

所以你的代码是:

<!--[if IE]>
    <script>
           window.location.replace("http://stackoverflow.com");
    </script>
<![endif]-->

此外,将其放在页面顶部-重定向之前不需要处理以前的内容,是否继续应该是<head>部分中确定的第一件事。

也就是说,我的总体倾向是调试和解决CSS问题,特别是当IE 10放弃了对条件评论的支持,并且可以很好地保持自己的状态时,你可能会发现你只是在推迟不可避免的事情(很抱歉是坏消息的传播者!)

另一种选择是将以下内容放在页面的head部分:

<script>
    navigator.appName == 'Microsoft Internet Explorer' && window.location.replace("http://stackoverflow.com");
</script>

如果你真的想确定,请阅读微软关于检测IE 的文章

您也可以使用:

<?php 
if (isset($_SERVER['HTTP_USER_AGENT']) && (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
     header('Location: http://www.foo-bar.com/please-use-a-browser.html');
     exit(0);
}

在服务器端。