Greasy Fork is available in English.
由 酷安@达蒙山 的划词菜单修改而来
// ==UserScript==
// @name 划词新菜单
// @namespace https://viayoo.com/
// @version 0.5
// @description 由 酷安@达蒙山 的划词菜单修改而来
// @author 呆毛飘啊飘2171802813
// @run-at document-start
// @match *
// @grant none
// ==/UserScript==
! function() {
if(document.getElementById("hckj")){
document.getElementById('hckj').remove();
}
window.addEventListener('contextmenu', function(e){
e.preventDefault();
});
var ssyq = [{
name: "复制",
url: "viek://copytext/"
}, {
name: "全选",
url: "viek://share/"
}, {
name: "搜索",
url: "viek://search/"
}, {
name: "翻译",
url: "https://fanyi.baidu.com/?tpltype=sigmah#en/zh/"
}],
hcTimer,
ljurl,
text;
function hccd() {
text = window.getSelection()
.toString()
.trim();
text ? (document.getElementById("hckj")
.style.top = sy, document.getElementById("hckj")
.style.display = "block", zdcd()) : document.getElementById("hckj")
.style.display = "none";
}
function tzurl(a, b) {
b = b || text;
if (typeof(window.viek) == "undefined" || window.viek == null) {
if (a == "viek://share/") {
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();var r=document.createRange();r.selectNode(document.documentElement);window.getSelection().addRange(r);
} else if (a == "viek://copytext/") {
copyText(b);
} else if (a == "viek://search/") {
if (typeof(window.via) == "undefined" || window.via == null) {
ljurl = 'https://m.baidu.com/s?word=' + b;
window.open(ljurl);
} else {
via.searchText(b);
}
} else {
ljurl = a + b;
window.open(ljurl);
}
} else {
ljurl = a + b;
window.open(ljurl);
}
}
function zdcd() {
document.getElementById("hckj")
.style.left = (document.documentElement.clientWidth - document.getElementById("hckj")
.offsetWidth) / 2 + "px";
var zdurl = text.match(/(https?:\/\/(\w[\w-]*\.)+[A-Za-z]{2,4}(?!\w)(:\d+)?(\/([\x21-\x7e]*[\w\/=])?)?|(\w[\w-]*\.)+(com|cn|org|net|info|tv|cc|gov|edu)(?!\w)(:\d+)?(\/([\x21-\x7e]*[\w\/=])?)?)/i)[0];
if (zdurl) {
var tzlj = document.createElement("span");
tzlj.id = "zdan";
tzlj.innerHTML = "转到";
tzlj.addEventListener("click",
function() {
zdurl.indexOf("http") < 0 ? tzurl("http://", zdurl) : tzurl("", zdurl);
});
document.getElementById("hckj")
.appendChild(tzlj);
};
document.getElementById("hckj")
.style.left = (document.documentElement.clientWidth - document.getElementById("hckj")
.offsetWidth) / 2 + "px";
}
if (!document.getElementById("cdkj")) {
var cddiv = document.createElement("div");
cddiv.id = "cdkj";
cddiv.style.cssText = "width:100%;display:block!important;position:fixed;top:0px;z-index:99999999;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0);";
document.body.appendChild(cddiv);
var cdstyle = document.createElement("style");
cdstyle.type = "text/css";
cdstyle.innerHTML = "#cdkj span{user-select: none;display:inline-block;border:1px solid #c5c5c5;background:#6a6a6a;color:#fff;font-size:14px;line-height:16px;padding:8px 10px 8px 10px;}";
document.body.appendChild(cdstyle);
}
var hcdiv = document.createElement("div");
hcdiv.id = "hckj";
hcdiv.style.cssText = "border:1px solid #c5c5c5;background:#c5c5c5;position: absolute;display:none";
document.getElementById("cdkj")
.appendChild(hcdiv);
for (var i = 0; i < ssyq.length; i++) {
var jksp = document.createElement("span");
jksp.innerHTML = ssyq[i].name;
jksp.setAttribute("jkdz", ssyq[i].url);
jksp.onclick = function() {
tzurl(this.getAttribute("jkdz"));
};
document.getElementById("hckj")
.appendChild(jksp);
}
document.addEventListener("selectionchange", function() {
clearTimeout(hcTimer);
hcTimer = setTimeout(hccd, 75);
if (document.getElementById("zdan")) {
document.getElementById("zdan")
.parentNode.removeChild(document.getElementById("zdan"));
}
});
document.addEventListener('touchstart', function(e) {
sy = e.touches[0].clientY + 20;
sm = sy + 25;
if (document.documentElement.clientHeight < sm) {
sy = document.documentElement.clientHeight - 100;
}
sy = sy + "px"
});
function copyText(txt) {
var x = document.body.scrollTop;
var y = document.documentElement.scrollTop;
const ta = document.createElement('textarea');
ta.value = txt;
ta.style.position = 'absolute';
ta.style.opacity = '0';
ta.style.left = '-999999px';
ta.style.top = '-999999px';
document.body.appendChild(ta);
ta.focus();
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
window.scrollTo(x, y);
};
}();