您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
由于Web选择太好用,微软就把他砍掉了。本脚本实现了Web选择的部分功能。按下Alt+S即可选择文本。
当前为
// ==UserScript== // @name Web选择 // @name:en Web Select // @name:zh-TW Web捕獲 // @namespace http://howardzhangdqs.eu.org/ // @source https://github.com/Howardzhangdqs/web-select // @version 0.2.2 // @description 由于Web选择太好用,微软就把他砍掉了。本脚本实现了Web选择的部分功能。按下Alt+S即可选择文本。 // @description:en Due to the ease with which the "web select" was used, Microsoft cut it off. This script implements some functions of "web select". Press Alt+S to select text. // @description:zh-TW 由於Web選擇功能非常實用,微軟就將它砍掉了。本腳本實現了Web選擇的部分功能。按下Alt+S即可選擇文本。 // @author HowardZhangdqs // @match *://*/* // @license MIT // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABsUExURf///xYWFgMDAw4ODgICAh8fHw4ODQAAAA8PD9LS0gEBAR4eHgcHBwoKCgUFBQgICCAgICgoKCwsLB0dHSQkJCYmJvv7+vr6+ZiYlyMjIhwcHJaWlBsbGxgYGAYGBnV2dfz9/BAQEHR0cw0NDWBB0hYAAAFaSURBVFjD7VbZkoMgEARBwNvNsfed///HAJoUq3Ga1a0tH+ynQXragWmtYWzDelEopXzQmgu+/Jorxe9gOtceNjI6gF2X14hC0ic8MZYPBIJwGqonlSzIsHhkkQpu/xlVqKa3D3b7QJ+RLqHAlyRIisICaqkAXYE9YYKMAijYaTGU/0dWu+4+eL9DcjOm1J1DZZQP2jFF6qtARBvNiJK65FxK+TlTwOWnfXyaIZDZB9UvnHhT4HWpQLoJ/KGANcUH/h98EwJzvsSVCST6HiUMKT8EWtyFguyCWdrGxQJHLKCRkYDCzv2+yC644cCY7r78eCOEEd2aC+OHjh3lg2CIGI44TTh8TBupZx0nRxyBnFi4xGYw4rxc1uVKv4U9JGW0M96xeQiFHLoPnNLNtm+LrknTFWIBrgGhQm/oBoSUfAF9S1IjIKdUIF9iO5FF8ChL7it5EzVnG1aMM5cYFmmzQuXPAAAAAElFTkSuQmCC // @grant none // ==/UserScript== (() => { "use strict"; var t = { border: "1px solid #fff", outline: "1px dashed #000", outlineOffset: "-1px", zIndex: "99999", }, e = { border: "1px solid #fff", outline: "1px solid #000", outlineOffset: "0", zIndex: "99999", }, n = { position: "fixed", outline: "3px dashed white", zIndex: "99999" }, o = function (t, e) { for (var n in (t instanceof HTMLElement && (t = [t]), e)) for (var o = 0, i = t; o < i.length; o++) i[o].style[n] = e[n]; }, i = function (e) { var n = e.top, i = e.left, r = e.width, c = e.height, l = e.text, a = e.src, u = document.createElement("div"); return ( (u.style.position = "fixed"), (u.style.top = "".concat(n, "px")), (u.style.left = "".concat(i, "px")), (u.style.width = "".concat(r, "px")), (u.style.height = "".concat(c, "px")), o(u, t), (u.style.zIndex = "99999"), document.body.appendChild(u), { top: n, left: i, width: r, height: c, text: l, el: u, src: a } ); }, r = function (i) { return new Promise(function (r, c) { var l = document.createElement("div"); o(l, n), document.body.appendChild(l); var a = [], u = { _p1: [0, 0], _p2: [0, 0], set p1(t) { (this._p1[0] = Math.floor(t[0])), (this._p1[1] = Math.floor(t[1])), this.runwatch(); }, set p2(t) { (this._p2[0] = Math.floor(t[0])), (this._p2[1] = Math.floor(t[1])), this.runwatch(); }, get p1() { return this._p1; }, get p2() { return this._p2; }, get top() { return Math.min(this._p1[0], this._p2[0]); }, get left() { return Math.min(this._p1[1], this._p2[1]); }, get width() { return Math.abs(this._p1[1] - this._p2[1]); }, get height() { return Math.abs(this._p1[0] - this._p2[0]); }, watchfn: [], watch: function (t) { this.watchfn.push(t); }, unwatch: function (t) { this.watchfn = this.watchfn.filter(function (e) { return e !== t; }); }, runwatch: function () { for (var t = 0, e = this.watchfn; t < e.length; t++) (0, e[t])(this); }, }, h = function (t) { var e, n, i, r; t.preventDefault(), a.push.apply( a, ((e = document.createElement("div")), (n = document.createElement("div")), (i = document.createElement("div")), (r = document.createElement("div")), o([e, n, i, r], { position: "fixed", top: "0", left: "0", background: "#0007", zIndex: "99997", }), u.watch(function () { o(e, { top: "0", left: "0", width: "".concat(u.left, "px"), height: "100%", }), o(n, { top: "0", left: "".concat(u.left, "px"), width: "".concat(u.width, "px"), height: "".concat(u.top, "px"), }), o(i, { top: "".concat( u.top + u.height, "px", ), left: "".concat(u.left, "px"), width: "".concat(u.width, "px"), height: "calc(100% - ".concat( u.top + u.height, "px)", ), }), o(r, { top: "0px", left: "".concat( u.left + u.width, "px", ), width: "calc(100% - ".concat( u.left + u.width, "px)", ), height: "100vh", }); }), document.body.appendChild(e), document.body.appendChild(n), document.body.appendChild(i), document.body.appendChild(r), [e, n, i, r]), ), (l.style.display = "block"), (u.p1 = [t.clientY, t.clientX]), (u.p2 = [t.clientY, t.clientX]), (l.style.top = "".concat(u.top, "px")), (l.style.left = "".concat(u.left, "px")), (l.style.width = "0"), (l.style.height = "0"), document.addEventListener("mousemove", s), document.addEventListener("mouseup", f); }, p = function () { return i.filter(function (t) { return !( t.left < u.left || t.top < u.top || t.left + t.width > u.left + u.width || t.top + t.height > u.top + u.height ); }); }, s = function (n) { n.preventDefault(), (u.p2 = [n.clientY, n.clientX]), (l.style.top = "".concat(u.top, "px")), (l.style.left = "".concat(u.left, "px")), (l.style.width = "".concat(u.width, "px")), (l.style.height = "".concat(u.height, "px")); for (var r = p(), c = 0, a = i; c < a.length; c++) { var h = a[c]; r.includes(h) ? o(h.el, e) : o(h.el, t); } console.log( r .sort(function (t, e) { return e.left - t.left; }) .sort(function (t, e) { return e.top - t.top; }), ); }, f = function (t) { document.removeEventListener("mousemove", s), document.removeEventListener("mouseup", f), document.removeEventListener("mousedown", h), l.remove(); for (var e = 0, n = a; e < n.length; e++) n[e].remove(); o(document.body, { pointerEvents: "" }), r({ top: parseInt(l.style.top), left: parseInt(l.style.left), width: parseInt(l.style.width), height: parseInt(l.style.height), el: p(), }); }; document.addEventListener("mousedown", h), document.addEventListener("mouseup", f), o(document.body, { pointerEvents: "none" }); }); }, c = function (t, e) { for (var n = e.parentNode; null !== n; ) { if (n === t) return !0; n = n.parentNode; } return !1; }, l = function () { return ( (t = void 0), (e = void 0), (l = function () { var t, e, n, l, a, u, h, p, s, f; return (function (t, e) { var n, o, i, r, c = { label: 0, sent: function () { if (1 & i[0]) throw i[1]; return i[1]; }, trys: [], ops: [], }; return ( (r = { next: l(0), throw: l(1), return: l(2) }), "function" == typeof Symbol && (r[Symbol.iterator] = function () { return this; }), r ); function l(l) { return function (a) { return (function (l) { if (n) throw new TypeError( "Generator is already executing.", ); for (; r && ((r = 0), l[0] && (c = 0)), c; ) try { if ( ((n = 1), o && (i = 2 & l[0] ? o.return : l[0] ? o.throw || ((i = o.return) && i.call(o), 0) : o.next) && !(i = i.call(o, l[1])).done) ) return i; switch ( ((o = 0), i && (l = [2 & l[0], i.value]), l[0]) ) { case 0: case 1: i = l; break; case 4: return ( c.label++, { value: l[1], done: !1, } ); case 5: c.label++, (o = l[1]), (l = [0]); continue; case 7: (l = c.ops.pop()), c.trys.pop(); continue; default: if ( !( (i = (i = c.trys) .length > 0 && i[ i.length - 1 ]) || (6 !== l[0] && 2 !== l[0]) ) ) { c = 0; continue; } if ( 3 === l[0] && (!i || (l[1] > i[0] && l[1] < i[3])) ) { c.label = l[1]; break; } if ( 6 === l[0] && c.label < i[1] ) { (c.label = i[1]), (i = l); break; } if (i && c.label < i[2]) { (c.label = i[2]), c.ops.push(l); break; } i[2] && c.ops.pop(), c.trys.pop(); continue; } l = e.call(t, c); } catch (t) { (l = [6, t]), (o = 0); } finally { n = i = 0; } if (5 & l[0]) throw l[1]; return { value: l[0] ? l[1] : void 0, done: !0, }; })([l, a]); }; } })(this, function (d) { switch (d.label) { case 0: for ( t = document.createElement("div"), o(t, { position: "fixed", top: "0", left: "0", inlineSize: "100%", blockSize: "100%", zIndex: "99998", background: "#0007", }), v = [], document .querySelectorAll("*") .forEach(function (t) { var e = t.getBoundingClientRect(), n = e.top, o = e.left, i = e.width, r = e.height; n && o && i && r && t.innerText && v.push({ top: n, left: o, width: i, height: r, text: t.innerText, src: t, }); }), e = v, console.log(e), n = [], l = 0, a = e; l < a.length; l++ ) (u = a[l]), n.push(i(u)); return [4, r(n)]; case 1: for ( h = d.sent(), p = 0, s = n; p < s.length; p++ ) s[p].el.remove(); return ( (f = h.el .filter(function (t, e, n) { console.log(t, e, n); for ( var o = 0, i = n; o < i.length; o++ ) { var r = i[o]; if (c(r.src, t.src)) return !1; } return !0; }) .sort(function (t, e) { return t.left - e.left; }) .sort(function (t, e) { return t.top - e.top; })), console.log( f.map(function (t) { return t.text; }), ), navigator.clipboard.writeText( f .map(function (t) { return t.text; }) .join("\n\n"), ), [2] ); } var v; }); }), new ((n = void 0) || (n = Promise))(function (o, i) { function r(t) { try { a(l.next(t)); } catch (t) { i(t); } } function c(t) { try { a(l.throw(t)); } catch (t) { i(t); } } function a(t) { var e; t.done ? o(t.value) : ((e = t.value), e instanceof n ? e : new n(function (t) { t(e); })).then(r, c); } a((l = l.apply(t, e || [])).next()); }) ); var t, e, n, l; }; window.addEventListener("keydown", function (t) { "s" !== t.key || !t.altKey || t.ctrlKey || t.shiftKey || l(); }); })();