阻止IE用户加载网页

时间:2013-11-22 15:11:07

标签: javascript php css internet-explorer

我是一名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]-->

但没有重定向。

欢迎任何其他建议。

2 个答案:

答案 0 :(得分:4)

您放在页面末尾的代码无法正常工作,因为它是在客户端计算的,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 dropped support for conditional comments而且可以很好地保持自己,你可能会发现你只是推迟了不可避免的事情(抱歉)是坏消息的承担者!)

另一种方法是将以下内容放入页面的head部分:

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

如果你真的想确定,read this article from Microsoft关于检测IE

答案 1 :(得分:0)

你也可以使用:

<?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);
}

在服务器端。