有没有办法在不同的浏览器上显示不同的网站?

Is there a way to show a different website on different browsers?

我一直在练习 bootstrap 4,您可能知道 bootstrap 4 现在不支持 Internet Explorer 8。这可能会成为一个问题,所以我想知道我是否只能在 Internet Explorer 8 上显示不同的网站,或者有没有办法在不同的浏览器上改变一些东西。

其实是的!但是有什么办法吗:

1. if browser = opera(example) (check user agent)=> redirect to other website(other page or host!)

2. if browser = opera => render other template 

看到这个:

//check is IE :
 if (preg_match('/MSIE\s(?P<v>\d+)/i', @$_SERVER['HTTP_USER_AGENT'], $B) && $B['v'] <= 8) {
    // Browsers IE 8 and below
} else {
    // All other browsers
}

您可以尝试使用您首选的服务器端语言检测用户代理,或通过 navigator.userAgent 属性.

使用 JavaScript

但是,只为 IE8 维护站点的完整副本似乎有些矫枉过正 - 实际上,我什至不建议付出额外的努力来支持 IE8。然而,对于一般用途,以下是如何针对不同的 IE 版本并处理不支持的功能:

正在检测 IE

幸运的是,IE 支持 conditional comments,因此您可以使用它们根据 IE 版本包含不同的资源:

<!--[if lt IE 9]>
    <link rel="stylesheet" href="url/to/ie8/stylesheet">
<!--<![endif]-->
<!--[if gt IE 8]><!-->
    <link rel="stylesheet" href="url/to/bootstrap">
<!--<![endif]-->

如果仔细观察,您会发现最后一个 [if ...] 语句立即关闭,其内容未嵌入评论中。由于只有 IE 理解条件注释,其他浏览器将忽略它并在最后 if(实际上没有被注释掉的那个)中呈现您的内容。 语法相当丑陋,但它是仅针对 IE 版本的最简单方法。

检查缺失的特征

如果您需要确保您在网站上使用的代码适用于所有浏览器,只需列出您将要使用的浏览器功能并检查它们是否可用,而不是尝试制作每个古怪的浏览器都有不同的版本。看看 feature detection and polyfills 的想法,它们可能是将来解决这个问题的更好方法。

希望对您有所帮助!