延迟后运行javascript onload的最佳方法

时间:2011-03-06 01:43:52

标签: javascript escaping settimeout onload inject

我正在尝试制作一个运行以下代码的greasemonkey脚本。我测试了它,它绝对可以通过URL(javascript:blah blah;)减去当然的评论:

// 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”属性附加到body上,其setTimeout为10000毫秒,但无济于事。也许我应该尝试不同的方法,或者我在这个过程中重复了一个简单的错误?有人能告诉我他们会怎么做吗?

1 个答案:

答案 0 :(得分:2)

我会在你的页面上包含jquery库并将你的代码变成一个函数,然后执行:

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

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