在引用CSS文件时,IE不支持基本元素中的相对路径

时间:2011-06-30 22:15:05

标签: html css internet-explorer internet-explorer-9 base

我有一个网站使用base tag为相对网址设置绝对路径。它在我测试过的所有浏览器中都能正常工作,除了IE(大惊喜)。根据IE为CSS文件提出的请求,似乎没有注意到基本标记。它确实使用页面上的其他内容来确认基本标记。为什么会这样?除了使用绝对路径引用CSS文件之外,还能做些什么吗?这是我的代码:

<!DOCTYPE html>
<html><head>
<title>base test</title>
<base href="/baseTest/">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div>foo</div>
</body></html>

这是baseTest / style.css文件中的内容:

div {
    background: yellow;
}

编辑:图片似乎也是如此。我做的所有测试都是在IE9中进行的。标准模式以及IE8和IE7兼容模式出现了问题。

编辑2:如果指定绝对网址,它可以正常工作。我不知道对相对URL的支持是最近的功能。我可能会放弃我的计划使用基本标记来避免重复路径,除非我能找到一些方法(比如可能是一个JS hack)来完成这项工作。

示例页面:http://www.debugtheweb.com/test/base/relative.html

2 个答案:

答案 0 :(得分:7)

我不确定这是否是您在IE中的问题,但根据the HTML 4.01 standards document的相关部分,基本href中的URL必须是绝对URI。此外,在示例中,给定它看起来像这样(带有文件名):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
   <TITLE>Our Products</TITLE>
   <BASE href="http://www.aviary.com/products/intro.html">
 </HEAD>

 <BODY>
   <P>Have you seen our <A href="../cages/birds.gif">Bird Cages</A>?
 </BODY>
</HTML>

在谷歌搜索中,我发现了Firefox添加了对基本href中相对路径的支持的版本的讨论(这是你正在使用的),所以这显然不是一直存在的东西而不是4.01标准出现的东西描述

HTML5 spec似乎描述并允许基本URL没有主机部分(主机相对),所以可能是最近已添加到IE尚未支持或尚未完全支持的规范的内容但是对于CSS文件加载。

我建议你尝试将你的域名放在基础HREF中。

答案 1 :(得分:3)

根据html规范:http://www.w3.org/TR/html401/struct/links.html 参考:路径信息:BASE元素部分 - 此属性指定一个绝对URI,用作解析相对URI的基URI。

Chrome和Firefox支持此标记中的相对路径,但IE不支持。 IE严格遵守规范。

要在基本代码中操作并包含absolute url,只需在<head>代码后添加脚本代码,如下所示

<script type="text/javascript">
document.write("<base href='" + window.location.href.substring(0, location.href
        .indexOf("/context") + 9) + "' />");
</script>