如果浏览器是IE 7及更低版本,请隐藏正文

时间:2016-03-12 17:09:22

标签: html css internet-explorer

对于所有使用IE 7及更低版本网站的用户,我都希望在不显示head或网站任何其他部分的情况下显示消息并此消息。< / p>

将此代码放在<head> <!-- Target IE 7 EQUAL and LOWER (7, 6, 5, ..) --> <!--[if lte IE 7]> <div id="ie7lower"> <a href="http://browsehappy.com/"> <p>Click here to update your browser..</p> </a> </div> <style type="text/css">body {display:none;}</style> <![endif]--> </head> <body> ...

ie7lower

我认为应该显示div head,因为它仍在body中,并且内联样式告诉ie7lower不显示。

但是,只要我使用内联样式,div id head也会被隐藏。

可能是IE 7及更低版本将body置于head内,或假设bodyie7lower的一部分,因此div <!-- https://stackoverflow.com/questions/33252945/redirect-to-another-page-without-loading-current-page-in-jquery --> <!--[if lte IE 8]> <script type="text/javascript"> location.replace('ie/outdated.html'); </script> <![endif]--> 1}}也不再显示了?

基本上我想隐藏甚至更好甚至不为IE 7及更低版本的用户加载整个网站,只需向他们显示更新浏览器的消息。如果没有JavaScript可以做到这一点会很棒。

修改
虽然在没有显示包装器的情况下隐藏页面内容,这是我想要做的解决方案,但确实在条件注释中加载了所有其他脚本和CSS。

尝试尽可能减少HTTP请求并快速将IE 7和较低用户引导至“更新您的浏览器”消息/页面我使用Redirect to another page without loading current page in jquery将它们重定向到同一域上的一个简单的最小页面没有加载我为IE 8和IE 9设置的所有额外脚本和CSS。

/

如果您的ie/outdated.html位于同一个域名,outdated.html前面没有 <html> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Company Name | maximum 64 characters long title</title> <meta name="description" content="Site description | maximum 130 chars long description for search engine snippet"> <!-- http://blog.powermapper.com/blog/post/Page-Title-Length-for-Search-Engines.aspx --> </head> <body> <div id="outdated_container" style="text-align: center; margin: 0 auto;"> <h1>You are using an <strong>outdated</strong> browser that does not support this website's features.</h1> <h1><a href="http://browsehappy.com/">Please upgrade your browser</a> to improve your web experience.</h1> </div> </body> </html> ,请务必小心!

如果有人感兴趣,这是“过时的IE”消息/页面的起点。

"GET /Domain/ HTTP/1.1" 200 7866
"GET /Domain/ie/outdated.html HTTP/1.1" 200 1017

使用这种方法我只是得到

$('.btn-primary').on('click', function() {
    console.log($('.btn-primary').index($(this)))
});

而不是普通网站对所有浏览器以及IE 8和IE 9的所有其他HTTP请求。

这虽然意味着必须在IE 7中启用JS,默认情况下更低。鉴于目前这一点很可能是用户的一小部分(使用IE 7和JS禁用网上冲浪),我可以接受这种方法。

3 个答案:

答案 0 :(得分:2)

请不要将应该呈现的内容放在HTML头部内的用户身上。

我建议将所有内容包装在浏览器为IE7或更低版​​本时隐藏的包装中。

<head>
  <!--[if lte IE 7]>        
    <style type="text/css">#wrapper {display:none;}</style>
  <![endif]-->
</head>

<body>

<!--[if lte IE 7]>        
  <div id="ie7lower">
    <a href="http://browsehappy.com/">
      <p>Click here to update your browser..</p>
    </a>
  </div>
<![endif]-->

<div id="wrapper">
...
</div>
</body>

答案 1 :(得分:1)

在脑海中使用某种浏览器检测很好。

但是,将用户可见的内容放入其中并非如此。

您需要身体内的用户可以看到该部分。

根据您的评论更新:

不确定你指的是什么,但我会解决这两个问题。

  1. 你的div没有在头部显示,因为它根本不是一个可见的部分。

  2. 如果在身体中仍未显示,则还有其他问题。你的if语句可能没有取消注释。您可以使用他们的调试工具检查这是一个浏览器,以查看正在进行的操作。

  3. 如果您安装了任何用于浏览器检测的内容,请确保它已正确安装。

答案 2 :(得分:0)

使用此代码隐藏正文...

<!--[if lte IE 7]>  
<style>
    body {
        display:none;
    }
</style>
<![endif]-->