Save Div Text to TXT

Save text from a specified div to a txt file.

  1. // ==UserScript==
  2. // @name Save Div Text to TXT
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Save text from a specified div to a txt file.
  6. // @author You
  7. // @match *://*/*
  8. // @grant GM_registerMenuCommand
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. // 默认的 div 选择器
  18. let divSelector = GM_getValue('divSelector', '#yourDivSelector');
  19.  
  20. // 保存文本到 txt 文件
  21. function saveTextToTxt(text, filename) {
  22. const blob = new Blob([text], { type: 'text/plain' });
  23. const url = URL.createObjectURL(blob);
  24. const a = document.createElement('a');
  25. a.href = url;
  26. a.download = filename;
  27. a.click();
  28. }
  29.  
  30. // 从指定 div 中获取文本并保存到 txt 文件
  31. function saveDivTextToTxt() {
  32. const divElement = document.querySelector(divSelector);
  33. if (divElement) {
  34. const text = divElement.innerText;
  35. saveTextToTxt(text, 'div_text.txt');
  36. } else {
  37. console.error('Div not found with selector:', divSelector);
  38. }
  39. }
  40.  
  41. // 注册菜单命令,用于启用功能和更改 div 选择器
  42. GM_registerMenuCommand('Enable Div Text Save', () => {
  43. GM_setValue('divSelector', divSelector);
  44. saveDivTextToTxt();
  45. });
  46.  
  47. GM_registerMenuCommand('Change Div Selector', () => {
  48. const newSelector = prompt('Enter the new div selector (e.g., "#newDivSelector"):');
  49. if (newSelector) {
  50. GM_setValue('divSelector', newSelector);
  51. divSelector = newSelector;
  52. }
  53. });
  54.  
  55. // 设置界面,用于配置网址规则和对应的 div 选择器
  56. GM_registerMenuCommand('Configure Div Selector for Website', () => {
  57. const websiteUrlPattern = prompt('Enter the website URL pattern (regular expression):');
  58. if (!websiteUrlPattern) return;
  59.  
  60. const divSelectorInput = prompt('Enter the div selector for this website (e.g., "#yourDivSelector"):');
  61. if (!divSelectorInput) return;
  62.  
  63. // 保存网址规则和对应的 div 选择器
  64. GM_setValue('divSelector_' + websiteUrlPattern, divSelectorInput);
  65.  
  66. // 如果当前打开的网页匹配了新的网址规则,则更新当前的 div 选择器
  67. if (new RegExp(websiteUrlPattern).test(location.href)) {
  68. divSelector = divSelectorInput;
  69. }
  70. });
  71.  
  72. // 在每次打开新页面时检查是否有匹配的网址规则,并更新 div 选择器
  73. const websiteUrls = Object.keys(GM_getValue());
  74. for (const websiteUrl of websiteUrls) {
  75. const websiteUrlPattern = websiteUrl.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // 转义正则特殊字符
  76. if (new RegExp(websiteUrlPattern).test(location.href)) {
  77. divSelector = GM_getValue(websiteUrl, '#yourDivSelector');
  78. break;
  79. }
  80. }
  81. })();