Javascript, 随笔

Prototype1.4.0说明文档showLocalLinks例子有问题

链接在这里:http://www.sergiopereira.com/articles/prototype.js.html#EnumeratingArrays

这个showLocalLinks例子有问题,在哪个浏览器里都显示不出结果。

<script>
function showLocalLinks(paragraph){
paragraph = $(paragraph);
var links = $A(paragraph.getElementsByTagName('a'));
//find links that do not start with 'http'
var localLinks = links.findAll( function(link){
var start = link.href.substring(0,4);
return start !='http';
});
//now the link texts
var texts = localLinks.pluck('innerHTML');
//get them in a single string
var result = texts.inspect();
alert(result);
}

</script>
<p id=”someText”>
This <a href=”http://othersite.com/page.html”>text</a> has
a <a href=”#localAnchor”>lot</a> of
<a href=”#otherAnchor”>links</a>. Some are
<a href=”http://wherever.com/page.html”>external</a>
and some are <a href=”#someAnchor”>local</a>
</p>
<input type=button value=”Find Local Links” onclick=”showLocalLinks’someText’)”>

这个例子的意思应该是取出段落里面的本地链接,原理是链接开头不是http的就算,但是段落里面使用的#链接形式,无论在IE还是firefox里,都会被解释为带有http的形式,所以这个例子的结果永远都是空。

解决方法是把其中#开头的链接改为”javascript:;”,就可以看到效果了。

后话,也有可能是因为我用Apache调试的原因,#xxx全被解释为”http://localhost/#xxx”了。

Technorati : ,