我正在使用 JS 将基本 URL标记添加到文档头,因此页面上的相对链接有效。但它没有生效,并且Firebug(Firefox 的调试插件)显示该<BASE />
元素变灰..为什么?这是否意味着 Firefox 无法理解或语法不正确?
问问题
3193 次
1 回答
1
http://www.w3schools.com/TAGS/tag_base.asp
基本标签有两个组件 href 和 target。你的好像没问题。冷静你举一些它失败的链接的例子?
请参阅http://ashita.org/StackOverflow/base_test.html进行演示。(我的测试)
编辑:见评论
function addBase(url) {
var regex = /^(https?|ftp):\/\//;
var a = Array.prototype.slice.call(document.getElementsByTagName('a'),0);
var link = Array.prototype.slice.call(document.getElementsByTagName('link'),0);
var script = Array.prototype.slice.call(document.getElementsByTagName('script'),0);
var img = Array.prototype.slice.call(document.getElementsByTagName('img'),0);
var hrefs = a.concat(link);
var srcs = img.concat(script);
var element,href,src;
for (var i=0,len=hrefs.length;i<len;++i) {
element = hrefs[i];
href = element.getAttribute("href");
if (href) {
if (!regex.test(href)) {
href = (url + "/" + href).replace("//","/"); //to handle double slash collision
element.setAttribute("href",href);
}
}
}
for (var i=0,len=srcs.length;i<len;++i) {
element = srcs[i];
src = element.getAttribute("src");
if (src) {
if (!regex.test(src)) {
src = (url + "/" + src).replace("//","/"); //to handle double slash collision
element.setAttribute("src",src);
}
}
}
}
在 Firefox 中测试和工作
于 2009-05-28T11:14:51.627 回答