custom Script

快捷键执行自定义脚本

Versione datata 20/12/2020. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         custom Script
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  快捷键执行自定义脚本
// @author       neysummer2000
// @match        *://*/*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    GM_addStyle(`
#_rightMenu {
	z-index: 999999;
	background-color: rgba(0, 0, 0, 0.8);
	padding: 20px 20px 20px 0px;
    display: none;
    min-width: 100px;
    min-height: 100px;
    position: absolute;
    border: 1px solid black;
}

#_rightMenu a {
	color: white;
}

#_rightMenu li {
	border-bottom: 1px solid black;
	cursor: pointer;
}

#_rightMenu li:hover {
	background-color: rgba(0, 0, 0, 0.4);
}
`);

    var container = document.createElement("div");
    container.id = '_rightMenu';
    container.style.display = 'none';
    container.appendChild(document.createElement("ul"));
    document.body.appendChild(container);

    var g_menu = document.getElementById('_rightMenu');
    var g_scripts = [
        {
            name: 'open as popup',
            script: `
			var select = getSelectHtml();
			var s = getString(select, 'href="', '"');
			if(s == '') s = getString(select, 'src="', '"');
			if(s == '') s = select;
			if(s.substr(0, 4) == 'http'){
				window.open(s, new Date().getTime().toString(), 'height=1080, width=1920, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=yes,location=no,status=no');
			}
			`
		},
    ];
    var a, li;
    var g_b_show = false;
    for(var script of g_scripts){
        li = document.createElement('li');

        a = document.createElement('a');
        a.href = 'javascript: void(0);';
        a.innerText = script.name;
        a.onclick = function(){
            eval(script.script);
            hideMenu();
        }

        li.appendChild(a);
        _rightMenu.children[0].appendChild(li);
    }

    var movex; var movey;
    document.addEventListener('mousemove', function(e){
        e=e  || window.event;
        if(e.pageX || e.pageY)
        {
            movex=e.pageX;
            movey=e.pageY;

            if(g_b_show){
                var x = g_menu.offsetLeft;
                var y = g_menu.offsetTop;
                if(movex < x || movex > x + g_menu.offsetWidth ||  movey < y || movey > y + g_menu.offsetHeight){
                    hideMenu();
                }
            }
        }
    });

    window.addEventListener('keydown', function(e){
        if(e.altKey && e.code == 'KeyM'){
            showMenu(movex, movey);
        }
    });

    g_menu.onblur = function(e){
        hideMenu();
    }
    function showMenu(x, y){
        g_menu.style.left = x+'px';
        g_menu.style.top = y+'px';
        g_menu.style.display = 'unset';
        g_b_show = true;
    }

    function hideMenu(){
        g_menu.style.display = 'none';
        g_b_show = false;
    }

    function getSelectHtml(){
        if(window.getSelection){
            documentFragment =  window.getSelection().getRangeAt(0).cloneContents();
        }else if(document.selection){
            documentFragment =  document.selection.createRange().HtmlText;
        }
        var selectedHtml = '';
        for(var i=0;i<documentFragment.childNodes.length;i++){
            var childNode = documentFragment.childNodes[i];
            if(childNode.nodeType==3){ // Text 节点
                selectedHtml+=childNode.nodeValue;
            }else{
                var nodeHtml = childNode.outerHTML;
                selectedHtml+=nodeHtml;
            }
        }
        return selectedHtml;
    }

    function getString(str, s, e){
        var i_start = str.indexOf(s);
        if(i_start != -1){
            i_start += s.length;
            var i_end = str.indexOf(e, i_start);
            if(i_end != -1){
                return str.substr(i_start, i_end - i_start);
            }
        }
        return '';
    }

})();