Pārlūkot izejas kodu

[edit] set publish content

wenliming 2 gadi atpakaļ
vecāks
revīzija
a3f89a2aef
1 mainītis faili ar 47 papildinājumiem un 20 dzēšanām
  1. 47 20
      src/logic/content/twitter.js

+ 47 - 20
src/logic/content/twitter.js

@@ -541,26 +541,53 @@ export const _setPublishContent = throttle(function (content, time = 1000) {
 }, 800);
 
 
-const setDialogPublishContent = throttle(function (content) {
-    setTimeout(() => {
-        let inputEle;
-        let dialog = document.querySelector('div[role="dialog"]');
-        if (dialog) {
-            inputEle = dialog.querySelector('div[contenteditable="true"]');
-        } else {
-            inputEle = document.querySelector('div[contenteditable="true"]');
-        }
-        const dataTransfer = new DataTransfer();
-        dataTransfer.setData('text', content);
-        const event = new ClipboardEvent('paste', {
-            clipboardData: dataTransfer,
-            bubbles: true
-        });
-        if (inputEle) {
-            inputEle.dispatchEvent(event);
-        }
-    }, 800)
-}, 600);
+const setDialogPublishContent = (content) => {
+    console.log('setDialogPublishContent');
+    let targetNode =  document.querySelector('main');
+    let timer = null;
+    let observer;
+
+    timer = setTimeout(() => {
+      observer.disconnect();
+      document.execCommand("insertText", false, content);
+      console.log('changeCallback --> execCommand');
+    }, 3000)
+
+    const changeCallback = (mutationsList, obs) => {
+      let inputEle;
+      let dialog = document.querySelector('div[role="dialog"]');
+      if (dialog) {
+          inputEle = dialog.querySelector('div[contenteditable="true"]');
+      } else {
+          inputEle = document.querySelector('div[contenteditable="true"]');
+      }
+      console.log('changeCallback', inputEle);
+      if(inputEle) {
+        observer.disconnect();
+        clearTimeout(timer);
+
+        if(!isSetContent) {
+          isSetContent = true;
+          const dataTransfer = new DataTransfer();
+          dataTransfer.setData('text', content);
+          const event = new ClipboardEvent('paste', {
+              clipboardData: dataTransfer,
+              bubbles: true
+          });
+          inputEle.dispatchEvent(event);
+          console.log('changeCallback --> dispatchEvent');
+
+          setTimeout(() => {
+            isSetContent = false;
+          }, 1500)
+        }
+      }
+    }
+
+    observer = new MutationObserver(changeCallback);
+    const config = { attributes: true, childList: true, subtree: true };
+    observer.observe(targetNode, config);
+}
 
 /**
  * 创建deNet按钮 添加到页面