Javascript ';文件';在Greasemonkey中未定义

Javascript ';文件';在Greasemonkey中未定义,javascript,greasemonkey,Javascript,Greasemonkey,不到十分钟前,我决定为Greasemonkey写我的第一个剧本。我对此毫无经验。另外,我的JavaScript有点生疏,因为我上次用它编写代码已经有一段时间了。但我不明白为什么Greasemonkey会给我这个错误: Line: 9 Char: 2 Error: 'document' is undefined Code: 800A1391 Source: Microsoft JScript runtime error 这是我的剧本: // ==UserScript== // @name

不到十分钟前,我决定为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

有几件事:

  • 在浏览器中打开关于:config的
  • 在greasemonkey.editor上过滤
  • 输入有效编辑器的有效路径。我喜欢,但是
    c:\Windows\System32\notepad.exe
    应该可以在大多数Windows系统上运行
  • 您可能需要重新启动Firefox。

  • 由于Greasemonkey的沙箱/安全性,无法以这种方式添加事件侦听器。看

  • 您需要,比如
    显示链接()

  • 当使用经常失败的复杂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);
    

    谢谢你非常详尽的回答。这解释了很多,但最终我还是得到了同样的错误。我只是想做一个简单的工作,不用点击“显示更多链接”链接,而是自动加载链接。show_links()是一个函数,它是JS文件的一部分,基本上会对附加链接发出AJAX请求。它采用一个参数,即“idepisod”(插曲id)。我会继续胡闹的。谁知道呢,可能是我安装的脚本不正确或是其他原因。@user391369:当我安装该脚本并转到:,脚本工作正常,我可以看到所有链接。如果问题中没有关键信息缺失,那么你的GM可能有,或者你的FF可能感染了那个阴险的Microsoft.Net插件(你可以检查一下)。啊,是的,你知道你的Greasemonkey。问题是编辑器设置到了错误的路径。现在一切都好了。谢谢