JS内存在尝试拆分文本节点时泄漏

时间:2017-11-28 17:41:36

标签: javascript dom

我在p标签中有一个文本节点说“你好”。我编写了两个函数来搜索特定的字符串,并将文本节点拆分为多个文本节点,每个节点只包含特定的字符串。我在chrome和firefox中都得到了打印到控制台的功能的输出,但是之后ram的使用率在chrome中高达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");

0 个答案:

没有答案