我有一个网站使用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)来完成这项工作。
答案 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>