21

私は Greasemonkey の世界にかなり慣れていないので、JavaScript でボタンを作成する方法を知りたいと思っていました。

たとえば、YouTube や Google にボタンを配置したいとしますか? それを呼び出すか、作成するにはどうすればよいですか?

私は非常に混乱していて、何も見つかりません。これらのサイトの HTML とやり取りして Greasemonkey スクリプトに追加する方法がない限り?

4

2 に答える 2

43

OK、SO 質問ページ1にライブ ボタンを追加する完全なスクリプトを次に示します。

// ==UserScript==
// @name        _Adding a live button
// @description Adds live example button, with styling.
// @match       *://stackoverflow.com/questions/*
// @match       *://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_addStyle
// ==/UserScript==

/*--- Create a button in a container div.  It will be styled and
    positioned with CSS.
*/
var zNode       = document.createElement ('div');
zNode.innerHTML = '<button id="myButton" type="button">'
                + 'For Pete\'s sake, don\'t click me!</button>'
                ;
zNode.setAttribute ('id', 'myContainer');
document.body.appendChild (zNode);

//--- Activate the newly added button.
document.getElementById ("myButton").addEventListener (
    "click", ButtonClickAction, false
);

function ButtonClickAction (zEvent) {
    /*--- For our dummy action, we'll just add a line of text to the top
        of the screen.
    */
    var zNode       = document.createElement ('p');
    zNode.innerHTML = 'The button was clicked.';
    document.getElementById ("myContainer").appendChild (zNode);
}

//--- Style our newly added elements using CSS.
GM_addStyle ( `
    #myContainer {
        position:               absolute;
        top:                    0;
        left:                   0;
        font-size:              20px;
        background:             orange;
        border:                 3px outset black;
        margin:                 5px;
        opacity:                0.9;
        z-index:                1100;
        padding:                5px 20px;
    }
    #myButton {
        cursor:                 pointer;
    }
    #myContainer p {
        color:                  red;
        background:             white;
    }
` );




1驚くべきことに、この質問は以前に SO でこのように尋ねられたことがないようです。

于 2011-06-25T22:23:38.463 に答える