为什么greasemonkey脚本无效?
点击按钮用firebug查看错误信息提示:
get_toodledo_list is not defined
var get_toodledo_list = function(){
alert(1);
}var my_div=document.createElement("div");
my_div.innerHTML= '<button onclick="get_toodledo_list();" style="position:fixed;right:0;bottom:0;">list</button>';
document.getElementsByTagName('body')[0].appendChild(my_div);

解决方案 »

  1.   

    直接运行肯定是可以的,但作为greasemonkey脚本就不行了,总提示没定义,不知道为什么
      

  2.   

    比如给百度添加一个greasemonkey 脚本,
    该脚本js中代码如下:
    // ==UserScript==
    // @name        hello
    // @namespace   toodledo
    // @include     http://www.baidu.com/
    // @version     1
    // ==/UserScript==var get_toodledo_list = function(){
        alert(1);
    }var my_div=document.createElement("div");
    my_div.innerHTML=    '<button onclick="get_toodledo_list();" style="position:fixed;right:0;bottom:0;">list</button>';
    document.getElementsByTagName('body')[0].appendChild(my_div);
    点击右下那个list的按钮,如果你已经打开了firebug并切换的控制台就会看到get_toodledo_list没定义的错误
      

  3.   

    大神,你没用过greasemonkey?我说的只是举例,你随便找任意一个网页都可以,如果你没用过gm,就不知道我说的是什么东东了
      

  4.   

    Greasemonkey它会自动的把你的脚本封装在一个匿名的函数包里。
    试下显式的把它们定义为window对象的属性:
    window.get_toodledo_list = function(){}
      

  5.   

    刚好写脚本也遇到这个问题。查看了一下wiki发现了问题所在。
    http://wiki.greasespot.net/XPCNativeWrapperExpando Properties do not work on XPCNativeWrappers. 
    刚好onclick就是一个Expando Properties。按照它示例的正确代码,稍作修改就行。