阻止使用 Internet Explorer 查看页面

Prevent viewing page using Internet Explorer

提问人:DanielAttard 提问时间:1/26/2012 最后编辑:rodrigoapDanielAttard 更新时间:9/13/2020 访问量:8156

问:

我开发了一个在 Chrome、Safari、Firefox 和 Opera 等现代浏览器中看起来很棒的网站,但是,它在旧版本的 Internet Explorer 中看起来很糟糕。

我是否可以使用一些代码来阻止页面在检测到旧版本的 IE 时加载?
也许代码可以加载不同的页面?

关于如何最好地实现这一目标的任何想法?谢谢。

Internet-Explorer 跨浏览器

评论

2赞 BlueRaja - Danny Pflughoeft 1/26/2012
这之前已经被问过几十次了。举个小例子,stackoverflow.com/questions/822508 stackoverflow.com/questions/1283704 stackoverflow.com/questions/280879 stackoverflow.com/questions/4743530
0赞 Ken Redler 1/26/2012
如何确定用户在 JavaScript 中运行的 IE 版本?

答:

1赞 Perry 1/26/2012 #1

在 HTML 中使用 Internet Explorer 条件注释

<!--[if lt IE 9]>
Insert your IE code, like possible redirection or alteration of your page
<![endif]-->

评论

1赞 Eric Hodonsky 1/26/2012
这不是发布代码的好方法。现在这被认为是一个糟糕的填充物,应该不惜一切代价避免。
0赞 Perry 1/26/2012
根据他的页面实际出现的问题,可能只需要一些不同的样式,用于IE特定的,就像通常的情况一样。IE 条件可能不是最好的方法,但它是最简单且万无一失的方法。
0赞 Eric Hodonsky 1/26/2012
实际上,万无一失的方法是在加载时进行浏览器检查,并将样式作为一个类应用于 body 标签。然后,在样式表中,使用此类前言级联 IE 中对任何内容的需求。
1赞 Steven Lu 2/5/2013
@Relic 为什么这到底不是一个好的解决方案?如果禁用 JS,则 JS 重定向或条件逻辑或用户代理检测将不起作用。这个条件 HTML 注释在没有可用于定义行为的唯一语言的情况下工作......除此之外,OP 明确指出他要阻止页面的显示,并且每个人都在继续设置样式。他已经过了那个阶段。
1赞 Eric Hodonsky 2/6/2013
总的来说,我要说的是,这不应该这样做。太骇人了......现在你正在加载额外的内容供浏览器解释,增加了重量。如果你认为这是你的解决方案,那么你就做错了别的事情。
0赞 Scott 1/26/2012 #2

您可能需要考虑将 Chrome 框架添加到您的网页中。http://code.google.com/chrome/chromeframe/

评论

1赞 cosmix 11/20/2014
Chrome 框架已于 2014 年 2 月停用。
1赞 Tim 1/26/2012 #3

可以使用字符串 in 查找包含 Internet Explorer 特有字符串的用户代理。然后,您可以发出或重定向到另一个页面,该页面警告IE的危险。USER_AGENT$_SERVERheader("Location: google.com")

评论

0赞 Eric Hodonsky 1/26/2012
我不建议将用户从您的网站中移开。如果你需要制作一个特殊的启动页面或某种东西,说明你为什么不支持IE,那就这样做吧。但是,请尽量保持用户的参与度,并允许他们选择升级或切换浏览器,以便他们尽快返回您的网站以获得最佳体验。
0赞 Paker 1/26/2012 #4

看看这个:

QuirksMode -- 浏览器检测

3赞 Eric Hodonsky 1/26/2012 #5

是的,当然,您可以使用客户端重定向或服务器端重定向。 或 您可以根据浏览器显示不同的内容。

Javascript/jQuery:

if ($.browser.msie && parseInt($.browser.version, 10) < 9) {
    // Do IE specific Tasks
    // window.location = "http://somewhat.com"
}else{
   //Do other tasks
}

PHP的:

<?php
$browser = get_browser(null, true);
print_r($browser);
?>

评论

1赞 Tim 1/26/2012
我不建议将用户从您的网站中移开。如果你需要制作一个特殊的启动页面或某种东西,说明你为什么不支持IE,那就这样做吧。但是,请尽量保持用户的参与度,并允许他们选择升级或切换浏览器,以便他们尽快返回您的网站以获得最佳体验。
0赞 Eric Hodonsky 1/26/2012
@Tim是的,你真是太好了。除非你对“somewhat.com”很挑剔,这显然是一个变量而不是一个字符串......它的意思是:“无论你的域名是什么”。我想我也可以一直把它放在我答案的顶部......
1赞 Tim 1/26/2012
我发布了您在我的答案中发布的关于不重定向用户的评论,因为您首先说重定向不好,然后将重定向放入您的答案中。
1赞 Eric Hodonsky 1/26/2012
@Tim啊,所以你只是误解了我的回答。明白了。
0赞 Leo Bi 10/5/2013 #6

您是否在网站中使用jQuery?

如果是这样,您可以利用 browser-validator-jshttps://github.com/bml3i/browser-validator-js) 向用户显示友好的消息,如果他们使用任何版本的 IE。只需将 browser-validator-js 和 jQuery 包含在 HTML HEAD 中,并将以下代码添加到 HTML BODY 中即可。

<script type="text/javascript">
    $(document).ready(function () {
        BrowserValidator.validateBrowser();
    }); 
</script>

这是一个示例:http://blog.bigcay.com/demo/browser_validator_demo.html

1赞 M.S 9/13/2020 #7

对我来说,它适用于

<script>
  if (window.navigator.userAgent.indexOf("Trident/") > 0) {
    alert("Internet Explorer is not supported.")
    window.location.replace("https://example.com/ie")
  }
</script>