Dreamweaver在Internet Explorer中导致Quirks模式

时间:2011-06-09 14:19:41

标签: dreamweaver quirks-mode

我使用Dreamweaver开发网站。我广泛使用模板功能,因为它有助于简化维护一致性。

但是,我注意到Dreamweaver在doctype之前添加了以下代码:

<!-- InstanceBegin template="/templates/web-public-user-home.dwt" codeOutsideHTMLIsLocked="false" -->

由于显而易见的原因(即doctype之前的评论),这使我的IE进入Quirks模式。有办法解决这个问题吗?!以下是我的文档类型。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

此致

2 个答案:

答案 0 :(得分:3)

好的,我想出来了。

由于我正在进行广泛的IE兼容性调整,我正在使用条件注释。但是,我在html标签上使用它们。原则上这没有任何问题,但是当您执行此操作时,Dreamweaver将无法正确处理您的实时模板更新(它将在doctype之前放置Dreamweaver特定的模板锁定代码,从而确保您的页面将在IE中抛出Quirks模式)

所以我所做的就是将我的条件评论系统从html标签移开,而不是在打开的body标签之后立即使用它们,并在关闭的body标签之前立即使用它们:

<body>
<!--[if IE 6 ]> <div id="ie" class="ie6"> <![endif]-->
<!--[if IE 7 ]> <div id="ie" class="ie7"> <![endif]-->
<!--[if IE 8 ]> <div id="ie" class="ie8"> <![endif]-->
<!--[if gt IE 8 ]> <div id="ie"> <![endif]-->
<!--[if !IE]><div id="not-ie"> <![endif]-->

{YOUR HTML CODE}

  </div>
</body>

这样,Dreamweaver将doctype和html标记放在模板锁定代码之前,结果页面将在IE上以标准模式显示(一切正常)。

干杯。

答案 1 :(得分:2)

Dreamweaver(包括CS6)将<!-- InstanceBegin template="...评论放在doctype代码前面,只有在无法找到开始<html>标记时你的模板!当您完全忘记该标记时,以及当该标记放在条件注释中时,会发生这种情况:

<!--[if IE 8]> <html class="ie8"> <![endif]-->

为避免这种情况,您必须避免将<html>标记括在条件注释中。当您在模板代码中使用普通的未经规范的<html>标记时,Dreamweaver会自动将<!-- InstanceBegin template="... 之后的<{strong> <html>标记放在从该模板派生的所有文件中IE不会陷入怪癖模式。