未捕获RangeError:使用setTimeout()超出最大调用堆栈大小

时间:2015-03-30 18:28:24

标签: javascript jquery html

我遇到了这段代码,以便在JavaScript中突出显示。当我取消并在我自己的机器上运行时,而不是jsFiddle我得到以下错误。

  

未捕获RangeError:超出最大调用堆栈大小

http://jsfiddle.net/jme11/bZb7V/

为了解决这个问题,我查看了StackOverflow上的其他问题并添加了一个setTimeout()函数,但我仍然得到错误。怎么样?

function getSelection() 
{
    var seltxt = '';

     if (window.getSelection) 
     { 
         seltxt = setTimeout(window.getSelection(), 5000); 
     } 
     else if (document.getSelection) 
     { 
         seltxt = setTimeout(document.getSelection(), 5000); 
     } 
     else if (document.selection) 
     { 
         seltxt = setTimeout(document.selection.createRange().text, 5000); 
     }
    else return;

    return seltxt;
}

1 个答案:

答案 0 :(得分:0)

您必须将对函数的引用传递给setTimeout函数。你直接调用这个函数,应该如下: function getSelection() {     var seltxt ='';

 if (window.getSelection) 
 { 
     seltxt = setTimeout(window.getSelection, 5000); 
 } 
 else if (document.getSelection) 
 { 
     seltxt = setTimeout(document.getSelection, 5000); 
 } 
 else if (document.selection) 
 { 
     seltxt = setTimeout(document.selection.createRange, 5000); 
 }
else return;

return seltxt;
}

不确定最后一个,因为你在函数调用后调用.text。