簡體   English   中英

嘗試拆分文本節點時出現JS內存泄漏

[英]JS Memory Leak while trying to split text node

我在ap標簽中有一個文本節點,說“ Hello”。 我編寫了兩個函數,它們搜索特定的字符串並將文本節點拆分為多個文本節點,每個文本節點僅包含特定的字符串。 我在chrome和firefox中都將函數的輸出打印到控制台,但是在那之后,在chrome中ram的使用超過了1.5GB,並且崩潰了,在firefox的情況下,它使用了100%的ram迫使我去做重新啟動。 為什么會這樣呢? 這是我正在使用的兩個函數:

   var splitIntoNodes = function(s,v){
      var i=0,j=0,nodeText,pos,t; var fNodes = [];
      for(i;i<s.length;i++){
         if(s[i].nodeName=="#text"){
            t = makeNodes(s[i],v);
            for(j=0;i<t.length;j++) fNodes.push(t[j]);
         } else {
            t = splitIntoNodes(s[i].childNodes,v);
            for(j=0;i<t.length;j++) fNodes.push(t[j]);
         }
      }
      return fNodes;
   }

   var makeNodes = function(s,v){
      var p = s.nodeValue.search(v),q,r,fNodes = [];
      while(p>=0){
         q = s.splitText(0,p);
         r = s.splitText(0,v.length);
         fNodes.push(r);
         p = r.nodeValue.search(v);
      }
      console.log(fNodes);
      return fNodes;
   }

// usage : splitIntoNodes(document.querySelector("id").childNodes),"a_string");

for(j=0;i<t.length;j++) fNodes.push(t[j]);

如果i小於t.length是無限循環。

您是要對循環條件使用j嗎? 即: j < t.length

如果是這樣,同一錯誤將向下重復幾行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM