我正在尝试编写一个跨浏览器用户脚本来隐藏 IMDb 的评分,并将其替换为允许用户稍后对节目/电影进行评分的链接。
在 Opera 中,这种方法已经奏效,但 Firefox 和 Chrome 都偶然发现了未定义的函数和/或变量。到目前为止,这是我的代码:
function hideimdbratings() {
if (document.getElementsByClassName("star-box")[0]) {
reenabled = document.getElementsByClassName("star-box")[0].innerHTML;
document.getElementsByClassName("star-box")[0].innerHTML = '<a href="#" id="showvote" onclick="reenableit();">Rate!</a>';
}
}
function reenableit() {
document.getElementsByClassName("star-box")[0].innerHTML = reenabled;
}
window.addEventListener('load', hideimdbratings, false);
第一部分工作正常,hideimdbratings()
执行并隐藏评级。
但是,点击“Rate!”链接后,Firefox 和 Chrome 都表示reenableit()
未定义。
试试这个:
onclick="document.getElementsByClassName(\"star-box\")[0].innerHTML = reenabled;"
结果他们说reenabled
没有定义。
我尝试将代码直接放入事件侦听器中:
window.addEventListener("load", function(e) {
// ...
}, false);
以及这种定义函数的方式(对于 Firefox 使用 unsafeWindow):
var window.reenableit = function() { }
但是,无论我做什么,两者都reenableit()
未定义reenabled
。据我了解,函数和变量在 Opera 以外的浏览器中都不是全局的,但我似乎还没有找到解决方案。
我错过了什么/做错了什么?