不超过十分钟前我决定为Greasemonkey编写我的第一个脚本。我没有经验。此外,我的JavaScript有点生疏,因为我上次编写代码已经有一段时间了。但我无法弄清楚为什么Greasemonkey给我这个错误:
Line: 9
Char: 2
Error: 'document' is undefined
Code: 800A1391
Source: Microsoft JScript runtime error
这是我的剧本:
// ==UserScript==
// @name Easier WatchSeries
// @namespace n/a
// @include http://www.watch-series.com/episode/*
// ==/UserScript==
function thing()
{
document.body.setAttribute('onload', show_links(document.getElementById('idepisod').value));
}
thing();
我想要做的就是在body标签上添加一个onLoad属性。当我转到“管理新用户脚本”时,我收到此错误 - > “编辑”。除此之外,脚本什么都不做,显然有些不对劲。
我正在运行Firefox 3.6.13。
答案 0 :(得分:5)
有几件事:
c:\Windows\System32\notepad.exe
应该适用于大多数Windows系统。由于Greasemonkey的沙盒/安全性,无法以这种方式添加事件侦听器。请参阅GM pitfalls, event handlers。
您需要use unsafeWindow
to call a page's JS functions,例如show_links()
。
当使用经常失败的复杂的ajax函数时,最好将它们包装在try - catch
块中。
该页面在 www.watch-series.com 和 watch-series.com 之间切换,因此两者都需要位于@include
指令。
总而言之,您的脚本将成为:
// ==UserScript==
// @name Easier WatchSeries
// @namespace n/a
// @include http://www.watch-series.com/episode/*
// @include http://watch-series.com/episode/*
// ==/UserScript==
function my_func()
{
try
{
unsafeWindow.show_links(document.getElementById('idepisod').value);
}
catch (zError)
{
alert (zError); //-- Use console.log() in place of alert(), if running Firebug.
}
}
window.addEventListener ("load", my_func, false);