我使用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">
此致
答案 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不会陷入怪癖模式。