CopyExecl

网页表格复制脚本

  1. // ==UserScript==
  2. // @name CopyExecl
  3. // @name:zh-CN 网页表格复制器
  4. // @namespace http://tampermonkey.net/
  5. // @version 1.231214.4
  6. // @description 网页表格复制脚本
  7. // @author N-cat
  8. // @match *://*/*
  9. // @icon data:image/png;base64,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
  10. // @homepageURL https://greasyfork.org/zh-CN/scripts/481068-copyexecl
  11. // @supportURL https://gitee.com/z2322739526/copyexecl
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16. // 全局变量默认值
  17. let startX = 9999; // 按下坐标
  18. let startY = 9999;
  19. let endX = 9999; // 鼠标坐标
  20. let endY = 9999;
  21. var tds = ""; // 所有td,th标签
  22. var tables = "";
  23. // 样式添加
  24. const style = `<style>
  25. .get{
  26. position:fixed;
  27. right:80px;
  28. bottom:150px;
  29. background-color:#00a1d6;
  30. color:white;
  31. height:50px;
  32. width:50px;
  33. border-radius: 10px;
  34. font-size:15px;
  35. border:solid 3px #FA5A57;
  36. cursor:pointer;
  37. outline: none;
  38. z-index: 9999;
  39. }
  40. .get:hover {
  41. background-color:#33b4de;
  42. }
  43. .display{
  44. position:fixed;
  45. right:80px;
  46. bottom:80px;
  47. background-color:#00a1d6;
  48. color:white;
  49. height:50px;
  50. width:50px;
  51. border-radius: 10px;
  52. font-size:15px;
  53. border:solid 3px #FA5A57;
  54. cursor:pointer;
  55. outline: none;
  56. z-index: 9999;
  57. }
  58. .display:hover {
  59. background-color:#33b4de;
  60. }
  61. .CEinfo{
  62. position:fixed;
  63. right:80px;
  64. top: unset !important; /* 取消设置 */
  65. bottom:30px !important;
  66. background-color:#00a1d6;
  67. width: 100px;
  68. color:white !important;
  69. border-radius: 10px;
  70. height: 30px;
  71. border:solid 3px #FA5A57;
  72. outline: none;
  73. cursor:default;
  74. display: inline-flex; /* 使其成为一个弹性盒子 */
  75. justify-content: center; /* 垂直居中 */
  76. align-items: center; /* 水平居中 */
  77. text-decoration: none !important; /* 取消下滑线 */
  78. cursor: pointer; /* 鼠标变为手势 */
  79. font-size: 12px;
  80. z-index: 9999;
  81. }
  82. .CEinfo:hover {
  83. color:white; /* 悬浮时也不变色 */
  84. background-color:#33b4de;
  85. }
  86. .alertMessage{
  87. position: fixed;
  88. top: 30px;
  89. left: 40%;
  90. right: 40%;
  91. padding: 20px 30px;
  92. background: rgba(0, 0, 0, 0.8);
  93. color: #ffffff;
  94. font-size: 20px;
  95. text-align: center;
  96. z-index: 9999;
  97. display: none;
  98. border-radius:5px;
  99. }
  100. </style>`;
  101. let div = document.createElement("div");
  102. div.innerHTML += style;
  103. document.body.append(div);
  104. // 提示框
  105. var alertMessage = document.createElement("div");
  106. alertMessage.classList.add('alertMessage');
  107. document.body.append(alertMessage);
  108. function alertmess(mess) {
  109. alertMessage.innerHTML = mess; // 填入要显示的文字
  110. alertMessage.style.display = "inline"; // 显示弹框
  111. setTimeout(function () { // 倒计时
  112. alertMessage.innerHTML = ''; // 清空文本
  113. alertMessage.style.display = "none" // 隐藏弹框
  114. }, 3000); // 3秒
  115. }
  116. // 鼠标悬浮在td上时提示
  117. function tdmm(){
  118. this.style.backgroundColor = 'black';
  119. this.style.color = 'white';
  120. }
  121. function tdmo(){
  122. this.style.removeProperty("background-color");
  123. this.style.removeProperty("color");
  124. }
  125. // 框选变色,抬起复制
  126. function wmd(e){
  127. startX = e.clientX;
  128. startY = e.clientY;
  129. // console.log(e.target);
  130. var wmdtd = e.target; // 是object对象而非HTMLTableCellElement
  131. if (wmdtd instanceof HTMLTableCellElement) {
  132. while (wmdtd && !wmdtd.matches("td, th")) { // css选择器
  133. wmdtd = wmdtd.parentNode;
  134. }
  135. wmdtd.style.backgroundColor = 'black';
  136. wmdtd.style.color = 'white';
  137. wmdtd.style.borderColor = "white";
  138. wmdtd.setAttribute("data-copycell", "copycell");
  139. wmdtd.dataset.copycell = "copycell";
  140. } else {
  141. console.log("点击内容如下,非表格对象\n", wmdtd);
  142. }
  143. }
  144. function wmm(e){
  145. // 点击判断
  146. if(startX !== 9999) {
  147. endX = e.clientX;
  148. endY = e.clientY;
  149. for(let i of tds){
  150. // 获取tr元素的左上角坐标和宽度、高度
  151. var rect = i.getBoundingClientRect();
  152. var tdleft = rect.left;
  153. var tdtop = rect.top;
  154. var tdwidth = rect.width;
  155. var tdheight = rect.height;
  156. // console.log("起止坐标", startX, endX, startY, endY);
  157. // console.log("td坐标", tdleft, tdtop);
  158. // 伪代码 if (X->((E<右 && 左<S) || (S<右 && 左<E)) && Y->((E<下 && 上<S) || (S<下 && 上<E))){}
  159. if (((endX <= tdleft + tdwidth && tdleft <= startX) || (startX <= tdleft + tdwidth && tdleft <= endX)) && ((endY <= tdtop + tdheight && tdtop <= startY) || (startY <= tdtop + tdheight && tdtop <= endY))) {
  160. //if (startX <= tdleft + tdwidth && startY <= tdtop + tdheight && endX >= tdleft && endY >= tdtop) { /////////目前只能从左上角框选到右下角,待更新
  161. // 将tr元素的背景色设置为黑色(或其他你想要的颜色)
  162. i.style.backgroundColor = 'black';
  163. i.style.color = 'white';
  164. i.style.borderColor = "white";
  165. i.setAttribute("data-copycell", "copycell");
  166. i.dataset.copycell = "copycell";
  167. } else {
  168. i.style.removeProperty("background-color");
  169. i.style.removeProperty("color");
  170. i.style.removeProperty("border-color");
  171. i.dataset.copycell = "";
  172. }
  173. }
  174. }
  175. }
  176. function wmu(e){
  177. startX = 9999; // 按下坐标
  178. startY = 9999;
  179. endX = 9999; // 鼠标坐标
  180. endY = 9999;
  181. var copyexecl = "";
  182. var oldtr = "";
  183. for(let i of tds){
  184. // 输出选中范围内信息
  185. if(i.dataset.copycell === "copycell"){
  186. // console.log(i.innerText);
  187. var itr = i;
  188. while (itr && !itr.matches("tr")) { // css选择器
  189. itr = itr.parentNode;
  190. }
  191. if(itr === oldtr || oldtr === ""){
  192. copyexecl += '\"\'' + i.innerText + '\"\t';
  193. } else {
  194. copyexecl = copyexecl.slice(0,-1) + '\n\"\'' + i.innerText + '\"\t';
  195. }
  196. oldtr = itr;
  197. }
  198. // 重置
  199. i.style.removeProperty("background-color");
  200. i.style.removeProperty("color");
  201. i.style.removeProperty("border-color");
  202. i.dataset.copycell = "";
  203. }
  204. // 当前框仍然为鼠标悬浮变色
  205. if (e.target instanceof HTMLTableCellElement){
  206. e.target.style.backgroundColor = 'black';
  207. e.target.style.color = 'white';
  208. }
  209. console.log(copyexecl);
  210. // 内容复制到剪切板
  211. const textarea = document.createElement('textarea');
  212. document.body.appendChild(textarea);
  213. textarea.innerHTML = copyexecl;
  214. textarea.select(); // 选取文本域的内容
  215. if (document.execCommand('copy') && copyexecl !== "") {
  216. document.execCommand('copy');
  217. alertmess("框选区域已复制到剪切板");
  218. }
  219. document.body.removeChild(textarea);
  220. }
  221. /*
  222. // 点击复制全部execl(基础适配)
  223. function tabmd(){
  224. var execl = []
  225. var trs = this.getElementsByTagName("tr");
  226. for(let j of trs){
  227. var row = []
  228. var tds = j.getElementsByTagName("td");
  229. for(let k of tds){
  230. if(k.style.display !== "none"){
  231. row.push(k.innerText);
  232. }
  233. }
  234. execl.push(row);
  235. }
  236. console.log(execl);
  237. var csv = ""
  238. for(let i of execl){
  239. for(let j of i){
  240. csv += '\"\'' + j + '\"\t';
  241. }
  242. csv = csv.slice(0,-1) + "\n";
  243. }
  244. console.log(csv);
  245. // 复制视频名称到剪切板
  246. const textarea = document.createElement('textarea');
  247. document.body.appendChild(textarea);
  248. textarea.innerHTML = csv;
  249. textarea.select(); // 选取文本域的内容
  250. if (document.execCommand('copy')) {
  251. document.execCommand('copy');
  252. alertmess("网页表格已复制到剪切板");
  253. }
  254. document.body.removeChild(textarea);
  255. }
  256. */
  257. // 获取包括iframe内的td和th
  258. function getAllTags(node, tags){
  259. var Tags = [];
  260. var taglist = tags.replace(/\s*/g, "").split(',');
  261. taglist.forEach(item => {
  262. item = item.toLowerCase(); // 将每个元素转换为小写字母
  263. });
  264. for (let i of node.childNodes) {
  265. // 如果子节点是td标签,则将其添加到结果数组中
  266. if (i.tagName && taglist.includes(i.tagName.toLowerCase())) {
  267. Tags.push(i);
  268. }
  269. // 如果子节点是iframe或者为Node.ELEMENT_NODE,则递归遍历其子节点
  270. if (i.tagName && i.tagName.toLowerCase() === "iframe") {
  271. Tags = Tags.concat(getAllTags(i.contentWindow.document, tags));
  272. } else if (i.nodeType === Node.ELEMENT_NODE) {
  273. console.log(i.nodeType);
  274. Tags = Tags.concat(getAllTags(i, tags));
  275. }
  276. }
  277. return Tags;
  278. }
  279. // 获取按钮 //////////main////////////
  280. var getnum = 0 // 0:未(取消)触发 1:已触发
  281. var get = document.createElement("input");
  282. get.setAttribute("type", "button");
  283. get.setAttribute("value", "开启");
  284. get.classList.add('get');
  285. document.body.append(get);
  286. get.onclick = function(){
  287. // tds = getAllTags(document, 'td, th'); // 获取包括iframe内的td和th
  288. tds = document.querySelectorAll('td, th'); // css选择器
  289. console.log(tds);
  290. if(getnum === 0){ // 开启
  291. getnum = 1;
  292. get.setAttribute("value", "关闭");
  293. for(let i of tds){
  294. // 文本设置无法选中
  295. i.style.userSelect = "none";
  296. // 鼠标悬浮在td上时提示
  297. i.addEventListener("mousemove", tdmm);
  298. i.addEventListener("mouseout", tdmo);
  299. }
  300. // 框选变色(还未添加复制功能)
  301. window.addEventListener("mousedown", wmd);
  302. window.addEventListener("mousemove", wmm);
  303. window.addEventListener("mouseup", wmu);
  304. /*
  305. // 点击复制全部execl(基础适配)
  306. tables = document.getElementsByTagName("table");
  307. for(let i of tables){
  308. i.addEventListener("mousedown", tabmd);
  309. }
  310. */
  311. alertmess("网页表格复制器-已开启");
  312. } else {
  313. getnum = 0;
  314. get.setAttribute("value", "开启");
  315. for(let i of tds){
  316. i.style.removeProperty("user-select");
  317. i.removeEventListener('mousemove', tdmm);
  318. i.removeEventListener('mouseout', tdmo);
  319. }
  320. window.removeEventListener('mousedown', wmd);
  321. window.removeEventListener('mousemove', wmm);
  322. window.removeEventListener("mouseup", wmu);
  323. tables = document.getElementsByTagName("table");
  324. /*
  325. for(let i of tables){
  326. i.removeEventListener("mousedown", tabmd);
  327. }
  328. */
  329. alertmess("网页表格复制器-已关闭");
  330. }
  331. }
  332. // 程序CEinfo
  333. var CEinfo = document.createElement("a");
  334. CEinfo.classList.add('CEinfo');
  335. CEinfo.innerHTML = "网页表格复制器";
  336. CEinfo.setAttribute("href", "https://greasyfork.org/zh-CN/scripts/481068-copyexecl");
  337. CEinfo.setAttribute("target", "_blank");
  338. document.body.append(CEinfo);
  339. // 单次隐藏按钮
  340. var display = document.createElement("input");
  341. display.setAttribute("type", "button");
  342. display.setAttribute("value", "隐藏");
  343. display.classList.add('display');
  344. document.body.append(display);
  345. display.onclick = function(){
  346. get.style.display = "none";
  347. display.style.display = "none";
  348. CEinfo.style.display = "none";
  349. // 关闭
  350. for(let i of tds){
  351. i.style.removeProperty("user-select");
  352. i.removeEventListener('mousemove', tdmm);
  353. i.removeEventListener('mouseout', tdmo);
  354. }
  355. window.removeEventListener('mousedown', wmd);
  356. window.removeEventListener('mousemove', wmm);
  357. window.removeEventListener("mouseup", wmu);
  358. tables = document.getElementsByTagName("table");
  359. /*
  360. for(let i of tables){
  361. i.removeEventListener("mousedown", tabmd);
  362. }
  363. */
  364. alertmess("网页表格复制器-已隐藏");
  365. }
  366. })();