Google Docs Viewer to Editable Mode (Improved)

Make Google Docs view-only mode editable

当前为 2025-02-17 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Google Docs Viewer to Editable Mode (Improved)
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description Make Google Docs view-only mode editable
  6. // @author You
  7. // @match https://docs.google.com/document/d/*/view*
  8. // @grant none
  9. // @license MIT
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. // Function to wait until the document editor is loaded
  16. function waitForDocument() {
  17. const viewerOverlay = document.querySelector('.kix-viewer-overlay');
  18. if (viewerOverlay) {
  19. removeViewerOverlay(viewerOverlay);
  20. }
  21.  
  22. const editableDiv = document.querySelector('.kix-appview-editor');
  23. if (editableDiv) {
  24. enableEditing(editableDiv);
  25. } else {
  26. setTimeout(waitForDocument, 1000);
  27. }
  28. }
  29.  
  30. // Remove the viewer overlay that blocks editing
  31. function removeViewerOverlay(viewerOverlay) {
  32. viewerOverlay.style.display = 'none';
  33. viewerOverlay.remove();
  34. }
  35.  
  36. // Enable editing mode on the document
  37. function enableEditing(editableDiv) {
  38. editableDiv.contentEditable = true; // Enable content editing
  39. editableDiv.style.pointerEvents = 'auto'; // Make the content interactable
  40.  
  41. // Force certain behaviors to remove "view-only" restrictions
  42. const viewerContent = editableDiv.querySelector('.kix-document');
  43. if (viewerContent) {
  44. viewerContent.setAttribute('contenteditable', 'true');
  45. }
  46.  
  47. // Optionally, remove any additional overlays or protections
  48. const disallowedMessage = document.querySelector('.docs-viewer-disallowed-message');
  49. if (disallowedMessage) {
  50. disallowedMessage.style.display = 'none';
  51. }
  52.  
  53. console.log('Google Docs is now in editable mode.');
  54. }
  55.  
  56. // Start the process once the page is ready
  57. waitForDocument();
  58.  
  59. })();