我是一个C++开发人员,试图交付他的第一个PHP/HTML5 5/CSS3 3项目。我不熟悉浏览器兼容性问题(尤其是IE),我在linux上做CSS工作。现在项目已经完成,可以交付了,但是发现IE上没有CSS代码。
我在谷歌上发现了IE7.js、CSS3 Pie和其他java脚本技巧,但没有人成功地解决了所有问题。因此,我试图找到一种方法,以防止用户加载旧的IE版本的内容。
此脚本(或条件注释)应将用户重定向到自定义页面,该页面指示用户必须下载并安装IE10或更高版本,或现代浏览器。
我试着把这段代码放在页面的末尾:
<!--[if IE]>
<?php
header( 'Location: http://www.foo-bar.com/please-use-a-browser.html' ) ;
?>
<![endif]-->但并没有改变方向。
任何其他建议都是受欢迎的。
发布于 2013-11-22 15:13:38
您放在页面末尾的代码无法工作,因为它是在客户端计算的,PHP是服务器端语言。因此,当客户端解析用户是否在使用IE...nothing时,因为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问题,特别是IE10 取消对条件注释的支持,并且可以很好地支持它,您可能会发现你只是在拖延不可避免的事情(抱歉,因为你是坏消息的传递者!)
另一种选择是将以下内容放在页面的head部分:
<script>
navigator.appName == 'Microsoft Internet Explorer' && window.location.replace("http://stackoverflow.com");
</script>如果你真的想确定的话,从Microsoft阅读本文关于检测IE
发布于 2013-11-22 16:18:40
您还可以使用:
<?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);
}在服务器端。
https://stackoverflow.com/questions/20148147
复制相似问题