<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=7487871339000666216" />
Run Code Online (Sandbox Code Playgroud)
如何在不使用任何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;
}
}
Run Code Online (Sandbox Code Playgroud)
jho*_*ter 35
现代浏览器支持querySelector()和querySelectorAll():
document.querySelector("link[title=RSD]").getAttribute("href");
Run Code Online (Sandbox Code Playgroud)
请参阅浏览器支持的图表.
原始代码:
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=7487871339000666216" />
Run Code Online (Sandbox Code Playgroud)
...
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;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的标记是一个link元素,而不是"链接标记".
没有"javascript",有几种不同的 ECMAScript实现.术语"javascript"具有误导性,不应该用作那些编程语言的总称.
在Web浏览器中不能有"纯javascript",这是一个主机环境.甚至document指的是主机(提供的)对象,它不是任何核心语言的一部分(ECMAScript语言规范,5.1版[ECMA-262-5.1],第4节).
始终声明您的标识符(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()and setAttribute()方法,而不是访问具有getter和setter的属性属性.前者不太向后兼容并且已知不可靠,特别是在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;
}
}
Run Code Online (Sandbox Code Playgroud)如果要快速引用元素,请使用id属性和document.getElementById()方法(还要考虑使用主机提供的集合):
<link rel="EditURI" type="application/rsd+xml" title="RSD"
href="http://www.blogger.com/rsd.g?blogID=7487871339000666216"
id="mylink" />
Run Code Online (Sandbox Code Playgroud)
...
var link = document.getElementById("mylink");
var href = link && link.href;
Run Code Online (Sandbox Code Playgroud)不要使用XHTML(语法),除非必须(如果它仍然有效,则删除尾部斜杠,请参阅W3C Validator).对于LINK必须位于元素内的特定HEAD元素,HTML 4.0版本中的语法错误没有标准化的补救措施. HTML5指定了它,但它仍然是工作草案,尚未在用户代理中完全实现.
只说"螺丝浏览器"的人满足于自己没有足够的专业经验(参见例如微软的Internet Explorer 6倒计时,它仍然在新兴市场中显示大量[目前为25.1%]的IE 6用户).建议您忽略前一组关于此主题的内容.
| 归档时间: |
|
| 查看次数: |
31339 次 |
| 最近记录: |