gsky916
小狐狸
小狐狸
  • UID28698
  • 注册日期2009-04-25
  • 最后登录2017-06-24
  • 发帖数94
  • 经验22枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
阅读:1866回复:5

[已解决]哪位高人能帮忙看一下,这个脚本问题出在哪儿,谢谢!!

楼主#
更多 发布于:2010-05-21 21:45
请帮忙看一下,这个脚本哪里出了问题,谢谢!!
之前一直可用,最近突然就不行了……错误控制台显示 第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();
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
1楼#
发布于: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好了
gsky916
小狐狸
小狐狸
  • UID28698
  • 注册日期2009-04-25
  • 最后登录2017-06-24
  • 发帖数94
  • 经验22枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
2楼#
发布于:2010-05-21 21:45
已经改好了,多谢多谢!

原来是verycd最近添加的订阅下载功能导致的。
aaaa007cn
千年狐狸
千年狐狸
  • UID23968
  • 注册日期2008-05-03
  • 最后登录2022-03-07
  • 发帖数1924
  • 经验1138枚
  • 威望1点
  • 贡献值232点
  • 好评度164点
3楼#
发布于:2010-05-21 21:45
不客气^^
一开始我以为脚本自身的问题,检查很久都没发现问题所在
后来灵机一动才想到检查页面源码
然后马上就看到hash[2]的那个逻辑有问题
咱对javascript还是经验不足啊
gsky916
小狐狸
小狐狸
  • UID28698
  • 注册日期2009-04-25
  • 最后登录2017-06-24
  • 发帖数94
  • 经验22枚
  • 威望0点
  • 贡献值0点
  • 好评度2点
  • 社区居民
4楼#
发布于:2010-05-21 21:45
您过谦了^_^

我只想着是不是正则匹配那块出问题了,盯着那些ED2K下载链接半晌也没瞧出毛病来,只好上来向各位大侠求助了 (^ ^;)

呵呵,实在是太菜了。
halffog
小狐狸
小狐狸
  • UID32571
  • 注册日期2010-04-15
  • 最后登录2013-07-19
  • 发帖数87
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2010-05-21 21:45
。。
游客

返回顶部