所以我知道我可以在我的所有帖子和其他内容上display:none;
。
问题在于你无论如何都可以看到源代码中的内容(非常确定99.9999%的IE8用户甚至不知道源代码选项,但是想要将其隐藏在源代码中... )。 我想要做的是除了在页面和源代码中显示类似的内容之外,根本不会得到任何代码:
<!--[if lte IE 8]>
<h2>You should update your browser version or choose another. Otherwise the content will not be visible for Internet Explorer users or below.<h2>
<![endif]-->
(这是一个WordPress网站)
答案 0 :(得分:1)
警告:警惕使用Jack Zelig的上述答案,它会损害服务器的安全性,因为它在解析用户代理的函数上运行eval。可以通过在服务器上运行代码来利用用户可访问的eval()。
This question has been answered more thoroughly here:
if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B) && $B['v'] <= 8) {
// Browsers IE 8 and below
// Don't render regular template files to these users
// e.g.: include 'update-your-browser.php'
} else {
// All other browsers
// Offer a version of the regular site
}
其他类似的解决方案可以改编: Can I detect IE6 with PHP?
答案 1 :(得分:0)
简短的回答是肯定的,可以做到。
但是对于你所描述的内容,我会说你不应该担心人们在你的源代码中看到的内容,除非这是一个安全问题(在这种情况下,它应该对每个人都隐藏,可能能够看到它的各种技术)。表示层对访问者来说真的很重要,在这种情况下display:none
就足够了。
答案 2 :(得分:0)
在主题文件夹的index.php中尝试:
<?php
function iever($compare=false, $to=NULL){
if(!preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $m)
|| preg_match('#Opera#', $_SERVER['HTTP_USER_AGENT']))
return false === $compare ? false : NULL;
if(false !== $compare
&& in_array($compare, array('<', '>', '<=', '>=', '==', '!='))
&& in_array((int)$to, array(5,6,7,8,9,10))){
return eval('return ('.$m[1].$compare.$to.');');
}
else{
return (int)$m[1];
}
}
if(iever('<=', 8)){
<?php include (TEMPLATEPATH . '/shared/header.php' ); ?>
<!-- YOUR CONTENT -->
<?php
include (TEMPLATEPATH . '/shared/sidebar.php' );
include (TEMPLATEPATH . '/shared/footer.php' );
?>
} else {
echo("Oh noes. IE8 or below. Maybe");
}
如果有效,请在评论中告诉我,我会找出要挂钩的动作(可能是init?),以便可以为每个页面完成。
我从here获得了浏览器嗅探功能。
你知道浏览器嗅探很糟糕,对吗?