首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止IE用户加载网页

防止IE用户加载网页
EN

Stack Overflow用户
提问于 2013-11-22 15:11:06
回答 2查看 129关注 0票数 0

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

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

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

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

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

但并没有改变方向。

任何其他建议都是受欢迎的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-22 15:13:38

您放在页面末尾的代码无法工作,因为它是在客户端计算的,PHP是服务器端语言。因此,当客户端解析用户是否在使用IE...nothing时,因为PHP没有输出浏览器可以读取和理解的运行时的“指令”,所以会发生这种情况。

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

代码语言:javascript
复制
<script>
     window.location.replace("http://stackoverflow.com");
</script>

所以你的代码是:

代码语言:javascript
复制
<!--[if IE]>
    <script>
           window.location.replace("http://stackoverflow.com");
    </script>
<![endif]-->

另外,把它放在页面的顶部-没有必要在重定向之前处理之前的内容,是否继续应该是<head>部分中确定的第一件事。

尽管如此,我的一般倾向是调试和处理CSS问题,特别是IE10 取消对条件注释的支持,并且可以很好地支持它,您可能会发现你只是在拖延不可避免的事情(抱歉,因为你是坏消息的传递者!)

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

代码语言:javascript
复制
<script>
    navigator.appName == 'Microsoft Internet Explorer' && window.location.replace("http://stackoverflow.com");
</script>

如果你真的想确定的话,从Microsoft阅读本文关于检测IE

票数 4
EN

Stack Overflow用户

发布于 2013-11-22 16:18:40

您还可以使用:

代码语言:javascript
复制
<?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);
}

在服务器端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20148147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档