IE兼容模式Bug

发布于 2024-10-18 21:25:07 字数 1192 浏览 4 评论 0 原文

这是我页面顶部的代码:

<!DOCTYPE html>

<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta charset="utf-8">
    <title></title>
    ...

我正在使用 Paul Irish 使检测和解决 IE 问题变得更加容易,但是此代码本身似乎会导致问题。问题是,使用条件注释代码会强制我的页面进入 IE8 兼容模式,尽管我根据 ie=edge 。 com/en-us/library/cc288325(VS.85).aspx#SetMode" rel="noreferrer">MSDN 指南

删除 html 标签周围的条件注释代码修复了该问题,并让 IE8 在标准模式下渲染;然而,我更愿意找到一个解决方案,让我保留条件代码并仍然强制 IE 以标准合规模式呈现。请记住,我没有可使用的 .htaccess 文件,因为该站点使用的是 windows/asp 设置。

Here is the code at the top of my page:

<!DOCTYPE html>

<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="no-js ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <meta charset="utf-8">
    <title></title>
    ...

I am using the conditional comment code from Paul Irish to make it easier to detect and address IE issues, however this code seems to be causing an issue in and of itself. The problem is, using the conditional comment code forces my page into IE8 compatibility mode, despite the fact that I explicitly declare ie=edge according to the MSDN guidelines.

Removing the conditional comment code around the html tag fixes the glitch and lets IE8 render in standards mode; however I would much rather find a solution that lets me keep the conditional code and still force IE to render in standards compliance mode. Keep in mind I don't have a .htaccess file to use as this site is using a windows/asp setup.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你爱我像她 2024-10-25 21:25:07

开头的空注释修复了它。

<!--[if IE_NEEDS_THIS]><![endif]-->
<!DOCTYPE HTML>
<!--[if lt IE 9]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html class="gt-ie8"><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>--</title>

但不要在元标记周围放置条件注释。 IE10会陷入怪癖。

An empty comment at the beginning fixes it.

<!--[if IE_NEEDS_THIS]><![endif]-->
<!DOCTYPE HTML>
<!--[if lt IE 9]><html class="lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html class="gt-ie8"><!--<![endif]-->
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<title>--</title>

But don't put a conditional comment around the meta tag. IE10 will fall into quirks.

萌面超妹 2024-10-25 21:25:07

我发现如果注释位于文档的开头,那么元标记也可以位于注释中。

无论如何它都能工作,然后它就是有效的 HTML5 了!

<!–[if IE]><![endif]–>
 <!DOCTYPE html>
 <html lang="de">
 <head>

<title></title>
 <!–[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><![endif]–>

在这种情况下,例如 IE8 和 IE9,但不是 content="IE=Edge,Chrome"

所以请仅使用 content="IE-Edge"

I've found if the comment at the beginning of the Documents, then the meta tag can also be in a comment.

It works anyway and then it is valid HTML5 !

<!–[if IE]><![endif]–>
 <!DOCTYPE html>
 <html lang="de">
 <head>

<title></title>
 <!–[if gte IE 8]><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><![endif]–>

In this situation, like IE8 and IE9 but not the content="IE=Edge,Chrome"

So please only content="IE-Edge"

厌倦 2024-10-25 21:25:07

你说:

请记住,我没有 .htaccess
要使用的文件,因为该网站正在使用
windows/asp 设置。

我认为这意味着您可以通过将X-UA-Compatible指定为HTTP响应标头而不是元标记来解决该问题。

如果您使用的是经典 ASP,您可以在文件顶部使用它并删除元标记:
(我猜测您的意思是经典 ASP,因为您的配置文件中缺少 ASP.NET 相关内容)

Response.AddHeader "X-UA-Compatible", "IE=edge,chrome=1"

这个答案基于我的喜好进行了太多猜测,因此它可能根本不起作用。

另外,这个问题可能有帮助:

IE8标准模式元标记

You said:

Keep in mind I don't have a .htaccess
file to use as this site is using a
windows/asp setup.

I assume that means you could get around the problem by specifying X-UA-Compatible as a HTTP response header, instead of as a meta tag.

If you're using Classic ASP, you could use this at the top of your file and get rid of the meta tag:
(I'm guessing you meant Classic ASP based on the the lack of ASP.NET related stuff in your profile)

Response.AddHeader "X-UA-Compatible", "IE=edge,chrome=1"

This answer is based on too much guessing for my liking, so it might plain not work.

Also, this question might help:

IE8 standards mode meta tag

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文