CSSを編集するGreasemonkeyスクリプト

ほかのサイトのCSSをブラウザから変更。デモ
インストール

// ==UserScript==
// @name           CSSEdit
// @namespace      http://d.hatena.ne.jp/f96q/
// @include        http://*
// ==/UserScript==

function cssEdit() {
    
    function gid(id) {
	return document.getElementById(id);
    }

    function init() {
	var div = document.createElement("div");
	div.id = "css_edit";
	document.body.appendChild(div);
	
	var css = document.createElement("style");
	css.type = "text/css";
	css.id = "css_edit_result";
	document.body.appendChild(css);
	
	viewInit();
    }

    function viewInit() {
	var n = 20;
	var div = document.createElement("div");
	with (div.style) {
	    width  = n + "px";
	    height = n + "px";
	    position = "fixed";
	    left = "0px";
	    top  = "0px";
	    background = "LightBlue";
	}
	div.addEventListener("click", viewEdit, false);
	if (gid("css_edit").firstChild) {
	    gid("css_edit").removeChild(gid("css_edit").firstChild);
	}
	gid("css_edit").appendChild(div);
    }
    
    function viewEdit() {
	var div = document.createElement("div");
	with (div.style) {
	    position = "fixed";
	    left = "0px";
	    top  = "0px";
	    background = "LightBlue";
	    padding = "4px";
	}
	var tag = [
	    '<textarea id="css_edit_text" style="font-size: 90%; width:270px; height:250px;"></textarea>',
	    "<br>",
	    '<button id="css_edit_bottan">edit</button>'
	].join("\n");
	div.innerHTML = tag;
	div.addEventListener("dblclick", viewInit, false);
	
	gid("css_edit").removeChild(gid("css_edit").firstChild);
	gid("css_edit").appendChild(div);
	
	gid("css_edit_text").value = gid("css_edit_result").innerHTML;
	gid("css_edit_bottan").onclick = function() {
	    gid("css_edit_result").innerHTML = gid("css_edit_text").value;
	}
    }
    init();
}

function run(func) {
    location.href = "javascript:void (" + func + ")()";
}

run(cssEdit);