梦想weaver导致IE浏览器进入怪异模式

4
我使用Dreamweaver来开发网站。我广泛使用模板功能,因为它有助于更轻松地维护符合性。
然而,我注意到Dreamweaver在doctype之前添加了以下代码:
<!-- InstanceBegin template="/templates/web-public-user-home.dwt" codeOutsideHTMLIsLocked="false" -->

这会因为doctype前有注释而使我的IE进入怪异模式。 有没有解决方法?下面是我的doctype。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

问候,
2个回答

3

好的,我弄清楚了。

由于我正在进行广泛的IE兼容性调整,因此我使用了条件注释。但是,我将它们用于html标签上。原则上没有什么问题,但Dreamweaver在这样做时无法正确处理您的实时模板更新(它会首先放置Dreamweaver特定的模板锁代码,然后才是doctype,从而确保您的页面在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上以标准模式显示(一切正常的情况下)。祝好。

你为什么在一个 </div> 后面加上了一个 'if IE' 注释和一个 </div> 后面的 '!IE' 注释?这些不是可以用简单的 </div> 替换吗? - ClarkeyBoy
@ClarkeyBoy 你说得对。我已经有一段时间没写这个了,可能是因为我在尝试做其他的事情,因为那个双正条件看起来就像是霍默·辛普森写的一样。我已经编辑过代码了。干杯。 - ObiHill
哈哈,霍默·辛普森的评论太搞笑了.. :) - ClarkeyBoy

2
Dreamweaver(包括CS6)只有在无法定位模板中的开头<html>标签时,才会在doctype标签前面放置<!-- InstanceBegin template="...注释!这种情况发生在您完全忘记该标签时,也会在该标签放置在条件注释中时发生:
<!--[if IE 8]> <html class="ie8"> <![endif]-->

为了避免这种情况,你必须避免将<html>标签包含在条件注释中。当你在模板代码中使用普通的未掩盖的<html>标签时,Dreamweaver会自动将<!-- InstanceBegin template="... 插入到该标签之后,所有从该模板派生的文件都不会陷入怪异模式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接