是否可以完全拒绝特定的Web浏览器访问Web应用程序?

时间:2011-03-01 16:51:09

标签: cross-browser

我一直在进行大量的跨浏览器测试,我必须说这是我存在的祸根。我的漂亮字体在特定浏​​览器和特定环境中被玷污。尽管在两个单独的浏览器中具有完全相同的代码,但内容以完全不同的方式呈现。当然,这不是秘密。但我想知道的是,是否有一种方法可以阻止用户使用特定浏览器访问HTML页面?

<!--[if IE/Safari/Firefox/Chrome/Opera/etc]>
<link rel="stylesheet" href="/stylesheets/block.css" type="text/css" />
<![endif]-->

block.css
body {display:none; }

从专业角度讲,我有义务支持用户可能认为他们想要使用的所有浏览器和环境。而且,了解每个浏览器的行为方式和原因并非如此糟糕。但是对于辅助项目来说,不必担心我是否会因为不支持浏览器x而被社会所避免而感到高兴。

另请注意,我没有将特定浏览器称为特别缺陷,因此请随意忽略任何“浏览器x糟透了!”评价。

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点:

  1. 您可以使用您的网络服务器执行此操作(我不知道您使用的是什么)
  2. 您可以在服务器代码中执行此操作(同样,不确定您使用的是什么)
  3. 您可以使用JavaScript执行此操作:

    if(<BROWSER SUCKS>) { window.location = "YOUR-ERROR-PAGE.html"; }

  4. 或者

    if(<BROWSER SUCKS>) {
      alert("Your browser sucks, use 'xyz' instead.");
    }
    

    您的代码需要查看window.navigator对象以检测浏览器类型。

    特别是关于上面的示例,如果浏览器被吸引,要隐藏页面,您将使用: document.body.style.display = "none";

答案 1 :(得分:0)

是的,可能,但这是不可行的,因为任何现代浏览器都会让你更改用户代理字符串,从而(可能)绕过你的支票。

答案 2 :(得分:0)

您可以使用以下内容:

<?php
$using_ie6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);
if($using_ie6) { 
    die('Sorry, your browser is not supported'); 
}
?>

并根据您要阻止的浏览器进行修改,上面显然会允许您阻止IE6。

您可以使用http://www.useragentstring.com/来提供帮助