我有一个使用
base tag的站点为相对URL设置绝对路径.它在我测试过的所有浏览器中运行良好,除了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>
div { background: yellow; }
编辑:同样的事情似乎也发生在图像上.我做的所有测试都在IE9中.标准模式以及IE8和IE7兼容模式出现了问题.
编辑2:如果我指定绝对URL,它工作正常.我不知道对相对URL的支持是最近的功能.我可能会放弃我的计划使用基本标记来避免重复路径,除非我能找到一些方法(比如可能是一个JS hack)来完成这项工作.
解决方法
我不确定这是否是您在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中.