阅读:2820回复:5
[已解决]哪位高人能帮忙看一下,这个脚本问题出在哪儿,谢谢!!
请帮忙看一下,这个脚本哪里出了问题,谢谢!!
之前一直可用,最近突然就不行了……错误控制台显示 第19行 hash is null 测试页面:http://www.verycd.com/topics/2807115/ // ==UserScript== // @name emule // @namespace emule // @description // @include * // @require http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js // ==/UserScript== function go(){ allLinks = document.evaluate( '//a[starts-with(@href, "ed2k")]',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for (var i = 0; i < allLinks.snapshotLength; i++) { var thisLink = allLinks.snapshotItem(i); var hash = thisLink.href.match(/\|(\d+)\|(\w{32})\|/); newElement = document.createElement('a'); newElement.innerHTML = '<strong>[查询可用源数]</strong>'; newElement.title = '查询可用源数'; newElement.href = 'http://ed2k.shortypower.org/?hash=' + hash[2]; newElement.target = "_blank"; thisLink.parentNode.insertBefore(newElement, thisLink.nextSibling); } } go(); |
|
1楼#
发布于:2010-05-21 21:45
。。
|
|
2楼#
发布于:2010-05-21 21:45
您过谦了^_^
我只想着是不是正则匹配那块出问题了,盯着那些ED2K下载链接半晌也没瞧出毛病来,只好上来向各位大侠求助了 (^ ^;) 呵呵,实在是太菜了。 |
|
3楼#
发布于:2010-05-21 21:45
不客气^^
一开始我以为脚本自身的问题,检查很久都没发现问题所在 后来灵机一动才想到检查页面源码 然后马上就看到hash[2]的那个逻辑有问题 咱对javascript还是经验不足啊 |
|
|
4楼#
发布于:2010-05-21 21:45
已经改好了,多谢多谢!
原来是verycd最近添加的订阅下载功能导致的。 |
|
5楼#
发布于:2010-05-21 21:45
<a href="ed2k://|subscribe|http://www.verycd.com/topics/2807115/feed|/" 有这么个链接,也符合 '//a[starts-with(@href, "ed2k")]' 但是这个做 var hash = thisLink.href.match(/\|(\d+)\|(\w{32})\|/); 的时候是匹配不到任何数据的 下面用hash[2]必然会报错,导致脚本中止 解决方法么,加一句判断hash是否为null好了 |
|
|