【问题标题】:Is the HTML <base> tag also honored by scripting and CSS?HTML <base> 标签是否也受到脚本和 CSS 的尊重?
【发布时间】:2011-01-10 19:23:51
【问题描述】:

base HTML 元素为 HTML 中的相对 URI 提供了基础。 JavaScript 和 CSS 是否也必须为在其中发布的相关 URI 提供支持:

例如

JavaScript:

location.href = "mypage.htm"` 

CSS:

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

(在任何浏览器中?)

【问题讨论】:

    标签: javascript html css uri relative-path


    【解决方案1】:

    CSS 路径总是相对于样式表本身,并且不依赖于 HTML 位置(除非 IE6 有缺陷和愚蠢并试图加载在 CSS behavior 属性中指定的相对于文档的 .htc 文件)。对于其他内容,&lt;base&gt; 将影响感知到的 HTML 的当前目录,就好像该文件位于 base 定义的目录中一样。因此,它确实会影响location.href=...; 之类的东西。顺便说一句,&lt;style&gt; 元素中的内联样式和样式信息是相对于文档位置加载的。当然,这些会受到&lt;base&gt; 标签的影响。

    【讨论】:

      【解决方案2】:

      base 标签确实只有 HTML 文档 本身 内的相关链接才会使用。

      然而,在 HTML(而不是 XHTML)中使用 &lt;base&gt; 标记时,您确实需要考虑一个特定于 IE6 的错误。 &lt;base&gt; 标记在 HTML 中记录为没有结束标记 &lt;/base&gt;,但 IE6 错误地将其假定为 true,这将导致整个内容 之后 &lt;base&gt; 标记被放置为 <base> 标记的strong>子。乍一看,这可能会导致 Javascript/jQuery/CSS 中出现无法解释的问题,即元素在特定选择中完全无法访问(例如 html&gt;body),直到您发现实际上有一个 base 介于两者之间。

      一个正常的 IE6 修复是使用条件 cmets 来包含结束标记:

      <base href="http://example.com/"><!--[if lte IE 6]></base><![endif]-->
      

      【讨论】:

      • @Marcus:它不是 HTML4 有效的(尽管浏览器接受它)。但是在 HTML5 中你可以完美地做到这一点。
      • @Marcus:请记住,使用 &lt;base&gt; 会影响锚点:stackoverflow.com/questions/1889076/…
      • 我知道,我已经改变了几千个 :)
      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2011-07-10
      • 1970-01-01
      • 2012-03-06
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多