Browse Source

:zap: ir 性能优化

Liyuan Li 5 years ago
parent
commit
c5b388e6d7
4 changed files with 12 additions and 8 deletions
  1. 8 6
      src/ts/ir/index.ts
  2. 1 1
      src/ts/ir/input.ts
  3. 2 0
      src/ts/ir/process.ts
  4. 1 1
      src/ts/toolbar/EditMode.ts

+ 8 - 6
src/ts/ir/index.ts

@@ -140,16 +140,18 @@ class IR {
                         },
                     });
                     insertHTML(vditor.lute.HTML2VditorIRDOM(tempElement.innerHTML), vditor);
-                    vditor.ir.element.querySelectorAll(".vditor-ir__preview").forEach((item: HTMLElement) => {
-                        processCodeRender(item, vditor);
-                    });
+                    vditor.ir.element.querySelectorAll(".vditor-ir__preview[data-render='2']")
+                        .forEach((item: HTMLElement) => {
+                            processCodeRender(item, vditor);
+                        });
                 } else if (event.clipboardData.files.length > 0 && vditor.options.upload.url) {
                     uploadFiles(vditor, event.clipboardData.files);
                 } else if (textPlain.trim() !== "" && event.clipboardData.files.length === 0) {
                     insertHTML(vditor.lute.Md2VditorIRDOM(textPlain), vditor);
-                    vditor.ir.element.querySelectorAll(".vditor-ir__preview").forEach((item: HTMLElement) => {
-                        processCodeRender(item, vditor);
-                    });
+                    vditor.ir.element.querySelectorAll(".vditor-ir__preview[data-render='2']")
+                        .forEach((item: HTMLElement) => {
+                            processCodeRender(item, vditor);
+                        });
                 }
             }
 

+ 1 - 1
src/ts/ir/input.ts

@@ -139,7 +139,7 @@ export const input = (vditor: IVditor, range: Range) => {
 
     setRangeByWbr(vditor.ir.element, range);
 
-    vditor.ir.element.querySelectorAll(".vditor-ir__preview").forEach((item: HTMLElement) => {
+    vditor.ir.element.querySelectorAll(".vditor-ir__preview[data-render='2']").forEach((item: HTMLElement) => {
         processCodeRender(item, vditor);
     });
 

+ 2 - 0
src/ts/ir/process.ts

@@ -104,6 +104,8 @@ export const processCodeRender = (previewPanel: HTMLElement, vditor: IVditor) =>
             previewPanel, vditor.options.cdn);
         codeRender(previewPanel, vditor.options.lang);
     }
+
+    previewPanel.setAttribute('data-render', '1');
 };
 
 export const processHeading = (vditor: IVditor, value: string) => {

+ 1 - 1
src/ts/toolbar/EditMode.ts

@@ -56,7 +56,7 @@ export const setEditMode = (vditor: IVditor, type: string, event?: Event) => {
         }
         setPadding(vditor);
 
-        vditor.ir.element.querySelectorAll(".vditor-ir__preview").forEach((item: HTMLElement) => {
+        vditor.ir.element.querySelectorAll(".vditor-ir__preview[data-render='2']").forEach((item: HTMLElement) => {
             processCodeRender(item, vditor);
         });
     } else if (type === "wysiwyg") {