我遇到了这段代码,以便在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;
}
答案 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。