HTML中的<base>标签是否也被脚本和CSS所支持?

37

HTML中的base元素为HTML中相对URI提供一个基础。JavaScript和CSS在发出相对URI时是否也需遵守此规定:

例如:

JavaScript:

location.href = "mypage.htm"` 

CSS:

h4 { 
    background-image: url(myimage.gif) 
}

(在任何浏览器中都适用吗?)

2个回答

40

CSS路径始终相对于样式表本身,与HTML位置无关(除非IE6有错误和愚蠢的行为尝试加载在CSS的behavior属性中指定的.htc文件相对于文档的位置)。对于其他内容,<base>将影响HTML的当前目录,就好像文件位于base定义的目录中一样。因此,它确实会影响到像location.href=...;这样的东西。顺便说一句,内联样式和<style>元素中的样式信息是相对于文档位置加载的。当然,这些都受到<base>标签的影响。


13
base 标签只影响 HTML 文档内部的相对链接,但需要注意一个 IE6 特定的 bug。在 HTML 中使用 <base> 标签时(而不是 XHTML),<base> 标签在 HTML 中被记录为没有结束标记</base>,但是 IE6 错误地将其视为真实的结束标记。这将导致在 <base> 标签之后的整个内容都成为其 HTML DOM 树中的 子元素。这可能会在 JavaScript/jQuery/CSS 中导致一些看似无法解释的问题,例如指定选择器(如 html>body)时无法访问元素,直到你发现中间实际上有一个 base 标签。修复 IE6 的常规方法是使用条件注释来包含结束标记。
<base href="http://example.com/"><!--[if lte IE 6]></base><![endif]-->

1
@Marcus:它不符合HTML4的规范(尽管浏览器可以接受它)。但在HTML5中,你完全可以这样做。 - BalusC
@Marcus:请记住,使用<base>会影响锚点:https://dev59.com/enI-5IYBdhLWcg3wYXL8#1889957 - BalusC
我知道,我已经改了几千个了 :) - Marcus Downing

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