<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=7487871339000666216" />
如何在不使用任何JavaScript库的情况下获取此链接标记的href属性?
现在我正在使用下面的代码来实现这个目标,但我想知道是否有更简单的解决方案。
var links = document.getElementsByTagName("link");
for (i in links){
var title = links[i].getAttribute("title");
if ( title == "RSD"){
var href = links[i].getAttribute("href");
break;
}
}
答案 0 :(得分:35)
现代浏览器支持querySelector()和querySelectorAll():
document.querySelector("link[title=RSD]").getAttribute("href");
答案 1 :(得分:7)
原始代码:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=7487871339000666216" />
...
var links = document.getElementsByTagName("link");
for (i in links){
var title = links[i].getAttribute("title");
if ( title == "RSD"){
var href = links[i].getAttribute("href");
break;
}
}
没有“javascript”,there are several different ECMAScript implementations.“javascript”一词具有误导性,不应用作这些编程语言的总称。
在Web浏览器中不能有“纯javascript”,这是一个主机环境。即使document
指的是主机( - 提供)对象,它也不属于任何核心语言(ECMAScript Language Specification, 5.1 Edition [ECMA-262-5.1],第4节)。< / p>
始终声明您的标识符(i
未声明)。不声明它们,从而不将它们附加到执行上下文,具有从泄漏到调用执行上下文到运行时错误的副作用。因此,此类代码不会在ECMAScript Ed中运行。 5.x严格模式,它抛出ReferenceError
例外(ECMA-262-5.1,第12.6.4和8.7.2节)。
切勿将for
- in
语句与类似数组的对象一起使用,特别是在测试之外,不使用主机对象(links
引用一个)。既不保证只考虑数字属性名称也不保证迭代顺序(ECMA-262-5.1,第12.6.4节)。
DRY:避免两次访问同一属性(您访问links[i]
两次)。否则结果将是程序中的更大变体(对象可能在此期间发生了变化),并且该方法效率低,难以维护,不必要。
避免调用元素对象的getAttribute()
和setAttribute()
方法,而是访问attribute properties that have getters and setters。前者不太向后兼容,并且已知不可靠,特别是在MSHTML / IE中,属性值和属性属性值之间没有适当的区别。
var links = document.getElementsByTagName("link");
for (var i = 0, len = links && links.length; i < len; ++i)
{
var link = links[i];
if (link.title == "RSD")
{
var href = link.href;
break;
}
}
如果要快速引用元素(但也考虑使用主机提供的集合),请使用id
属性和document.getElementById()
方法:
<link rel="EditURI" type="application/rsd+xml" title="RSD"
href="http://www.blogger.com/rsd.g?blogID=7487871339000666216"
id="mylink" />
...
var link = document.getElementById("mylink");
var href = link && link.href;
除非必须(删除尾部斜杠,如果它仍然有效,请参阅W3C Validator),否则不要使用XHTML(语法)。特别是LINK
元素必须位于HEAD
元素中,这是HTML 4.01版本中具有no standardized remedy的语法错误。 HTML5 specifies it但这仍然是工作草案,not yet fully implemented in user agents。
只说“螺丝$浏览器”而自称满足的人没有足够的专业经验(参见例如The Internet Explorer 6 Countdown, by Microsoft,其中仍然显示大量[目前为25.1%]的IE 6用户在新兴市场)。建议您忽略前一组关于此主题的内容。
答案 2 :(得分:-1)
是的,通过提供ID标签。 http://jsfiddle.net/Lc7ut/
答案 3 :(得分:-3)
你可以使用JQuery:
var url = $('link[rel=canonical]').attr("href");