base HTML元素为HTML中的相对URI提供了基础。 JavaScript和CSS还必须尊重它们中发布的相对URI:
例如
JavaScript:
location.href = "mypage.htm"`
CSS:
h4 {
background-image: url(myimage.gif)
}
(在任何浏览器中?)
CSS路径始终是相对于样式表本身的,并且不依赖于HTML位置(除非IE6有错误和笨拙,并且尝试加载相对于文档的CSS .htc
属性中指定的behavior
文件)。对于其他内容,<base>
将影响HTML的当前目录,就像文件位于base定义的目录中一样。因此,它确实会影响location.href=...;
之类的东西。顺便说一下,<style>
元素中的内联样式和样式信息是相对于文档位置加载的。这些当然会受到<base>
标签的影响。
base
标记实际上仅受HTML文档itself中的相对链接的尊重。
但是,在HTML中使用<base>
标记时(在XHTML中不是),确实需要考虑到IE6特定的错误。 HTML中记录的<base>
标签没有结束标签</base>
,但是IE6错误地将其假定为true,这将导致<base>
标签的整个内容被放置为child] > <base>
标记在其HTML DOM树中。乍一看,这可能会导致Javascript / jQuery / CSS中无法解释的问题,即在特定选择(例如html>body
)中元素完全不可访问,直到您发现它们之间确实存在base
。正常的IE6修复程序使用条件注释来包含结束标记:
<base href="http://example.com/"><!--[if lte IE 6]></base><![endif]-->