【发布时间】:2011-09-24 12:42:18
【问题描述】:
我正在制作一个 Greasemonkey 脚本,以便在 cnn.com 上的视频旁边添加下载链接。
我使用 HTML 页面的保存版本来测试我的脚本,并且能够让它完美地工作。然后当我将javascript放入Greasemonkey并在实际站点上尝试时,它不起作用。
这不是完整的脚本,而是有问题的脚本部分。它只是应该在每个 div 的底部添加一个带有“sec_video_box”类的链接(如图所示)。
// ==UserScript==
// @name CNN Download
// @namespace Cool
// @description CNN Download
// @include http://*cnn.com/video/*
// ==/UserScript==
var getClass = function(clssName, rootNode /*optional*/){
var root = rootNode || document,
clssEls = [],
elems,
clssReg = new RegExp("\\b"+clssName+"\\b");
// use the built in getElementsByClassName if available
if (document.getElementsByClassName){
return root.getElementsByClassName(clssName);
}
// otherwise loop through all(*) nodes and add matches to clssEls
elems = root.getElementsByTagName('*');
for (var i = 0, len = elems.length; i < len; i+=1){
if (clssReg.test(elems[i].className)) clssEls.push(elems[i])
}
return clssEls;
};
function insertlinks() {
var boxes = getClass("sec_video_box");
for (i=0; i<boxes.length; i++) {
var theboxid = boxes[i].getAttribute("id");
document.getElementById(theboxid).innerHTML = document.getElementById(theboxid).innerHTML + '<a href="'+ theboxid +'">link</a>';
}
}
window.onload = insertlinks ();
谁能告诉我我做错了什么?
【问题讨论】:
-
要注意的一点是,您可能应该使用 addEventListener 或 attachEvent 来监视正在加载的文档,因为在其他人的页面中分配给 window.onload 可能会击败他们的 onload 处理程序,或者他们可能会击败您的处理程序。
-
我试过了,还是不行。我不确定出了什么问题。