使用Greasemonkey添加我自己的onclick功能

时间:2012-01-29 00:25:32

标签: javascript greasemonkey

我想在页面上添加一个带有onclick事件的按钮。它最终会打开一个叠加div。

但是,我甚至无法得到警报。

我使用了一些技术,例如unsafeWindow,并将脚本标记添加到正文中,但仍无效。

这是我现在正在使用的代码:

function main() {
    var script_source = '<script type="text/javascript">function doenwedan(){alert("hebben we gedaan!");}</script>';
    var link_knop = '<br /><br /><br /><br /><button onclick="doenwedan()" value="gaan we doen">gaan we doen</button>';
    var orginele_pagina = document.getElementById('ds_body').innerHTML;
    document.getElementById('ds_body').innerHTML =orginele_pagina + link_knop + script_source ;
}

main();

我怎样才能使这个工作? 我需要这样的技术,因为当调用overlay div时,需要新的函数,所以如果要注入它们那么...

1 个答案:

答案 0 :(得分:1)

有几件事:

  1. 如果你没有注射JS,请不要注入(在“不要变成蛇;它永远不会帮助”旁边的邪恶霸主列表中)。
  2. 如果您不需要,请不要使用innerHTML。它会破坏事物并导致尝试使用正则表达式HTML的诱惑。
  3. 使用DOM方法添加内容,极少数例外。
  4. 我不确定这样创建的脚本节点是否会被解析。
  5. 不妨开始使用jQuery。它使事情变得更简单,更健壮。
  6. 总而言之,您的脚本将变为:

    // ==UserScript==
    // @name     _Add a button
    // @include  http://YOUR_SERVER/YOUR_PATH/*
    // @require  http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
    // ==/UserScript==
    
    function doenwedan () {
        alert ("hebben we gedaan!");
    }
    
    var orginele_pagina = $('#ds_body');
    orginele_pagina.append (
        '<br><br><br><br><button id="myButton" value="gaan we doen">gaan we doen</button>'
    );
    
    $("#myButton").click (doenwedan);