复制 Notion 页面正文内容

复制 Notion 页面正文部分的 HTML 到剪贴板。

  1. // ==UserScript==
  2. // @name Copy Notion Page Content
  3. // @name:zh-CN 复制 Notion 页面正文内容
  4. // @namespace http://www.notion.so/
  5. // @version 0.1
  6. // @description Copy the Notion page's html content to clipboard.
  7. // @description:zh-cn 复制 Notion 页面正文部分的 HTML 到剪贴板。
  8. // @author Ruter Lü
  9. // @match https://www.notion.so/*
  10. // @grant none
  11. // @run-at document-idle
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. // Helper function to wait for the element ready
  18. const waitFor = (...selectors) => new Promise(resolve => {
  19. const delay = 500;
  20. const f = () => {
  21. const elements = selectors.map(selector => document.querySelector(selector));
  22. if (elements.every(element => element != null)) {
  23. resolve(elements);
  24. } else {
  25. setTimeout(f, delay);
  26. }
  27. }
  28. f();
  29. });
  30. waitFor('div.notion-scroller .notion-record-icon').then(([iconEl]) => {
  31. console.log('Notion Page Loaded.');
  32. const disabled = iconEl.getAttribute('aria-disabled');
  33. if (disabled === 'true') {
  34. // Bind click event
  35. iconEl.addEventListener('click', event => {
  36. let content = document.querySelector('.notion-page-content');
  37. navigator.clipboard.writeText(content.outerHTML).then(function() {
  38. /* clipboard successfully set */
  39. console.log('Copy Notion Page Content Success.');
  40. }, function(e) {
  41. /* clipboard write failed */
  42. console.error(e);
  43. });
  44. });
  45. } else {
  46. return;
  47. }
  48. });
  49. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址