2011-03-06 61 views
0

我正在尝试make一个将运行以下代码的greasemonkey脚本。我测试了它,它肯定是通过URL作品(JavaScript的:等等等等;)当然要去掉注释:延迟后运行JavaScript onload的最佳方法

// Your country code 
var cc = 'net'; 

var j = document.getElementsByTagName('td'); 
for (i=0; i <= j.length; i++) { 
    if (j[[i]].innerHTML.indexOf('points - punishment #A') > 0 && j[[i]].innerHTML.length == 30) { 
     var k = j[[i]].innerHTML; 
     j[[i]].innerHTML = k.slice(0, 23) + '<a href="http://www.example.' + cc + '/admin.php?screen=affront_tool&mode=view_punishment&punishment_id=' + k.slice(25) + '">' + k.slice(23) + '</a>'; 
    } 
    else if (j[[i]].innerHTML.indexOf('points - punishment #A') > 0 && j[[i]].innerHTML.length == 29) { 
     var k = j[[i]].innerHTML; 
     j[[i]].innerHTML = k.slice(0, 22) + '<a href="http://www.example.' + cc + '/admin.php?screen=affront_tool&mode=view_punishment&punishment_id=' + k.slice(24) + '">' + k.slice(22) + '</a>'; 
    } 
    else if (j[[i]].innerHTML.indexOf('points - punishment') > 0 && j[[i]].innerHTML.length <= 67) { 
     var k = j[[i]].getElementsByTagName('a')[0]; 
     var l = 'http://www.example.' + cc + '/admin.php?screen=affront_tool&mode=view_punishment&punishment_id=' + k.getAttribute('href').slice(19); 
     k.setAttribute('href', l); 
    } 
} 

不幸的是这个剧本的工作负荷后动态生成长达十秒的页面的元素(预期约三个),这使事情变得困难。我已经尝试了将脚本作为“onload”属性附加到setTimeout为10000毫秒的身体的无数方法,但无济于事。也许我应该尝试一种不同的方法,或者我在这个过程中重复了一个简单的错误?有人能告诉我他们会怎么做吗?

回答

2

我会包括你的页面上的jQuery库,让你的代码放到一个函数,那么这样做:

$(document).ready(function() { 
      setTimeout('myFunction();', 10000); 
     }); 

在这种情况下,函数名称是“myFunction的()”

+0

嗯,从来没有使用jQuery的之前。假设页面本身不包含它,这些说明是否正确包含它: http://stackoverflow.com/questions/859024/how-can-i-use-jquery-in-greasemonkey – lpd 2011-03-06 01:56:48

+0

我只想去到http://jquery.com/并单击下载并将.js文件放到您的站点中,并在您的页面中引用它。 – Avitus 2011-03-06 01:59:11

+0

我无法自己修改页面,但如果最差的情况发生,我相信它可以完成。干杯:) – lpd 2011-03-06 02:05:16