2016-03-13 61 views
0

我試圖創建一個實時通知腳本,其中每次在我的文件中找到某個文本時,它都會播放聲音。這是我已經試過:jQuery未捕獲RangeError:使用setTimeout時超出最大調用堆棧大小

<script type="text/javascript" src="jquery-2.1.3.min.js"></script> 
<script type="text/javascript"> 
    function getTextfile() { 
     $.get('myfile.txt', { cache:false }, function(data) { 
      if (data.indexOf("Hello World") > -1) { 
       document.write("Hello World is found"); 
       var audio = new Audio('wb.wav'); 
       audio.play(); 
      } else { 
       document.write("It's NOT found"); 
       var audio = new Audio('wn.wav'); 
       audio.play(); 
      } 
      setTimeout(getTextfile, 1000); 
     },'text'); 
    } 
    getTextfile(); 
</script> 

而且myfile.txt看起來是這樣的:

Line one 
line two 
Hello World 
line four 

但在我的chrome瀏覽器我得到這個錯誤:

Uncaught RangeError: Maximum call stack size exceeded`

myfile.txt動態變化,因此每次找到正在查找的文本時都應該播放不同的聲音,或者如果我不必刷新瀏覽器就不會找到它。我該如何解決這個問題?

+0

你有沒有試過增加超時延遲? –

+0

這與問題無關,但請注意,您正在將'cache:false'作爲參數發送給請求,而不是停止jQuery緩存響應。如果你想停止緩存,使用'$ .ajax'並設置'cache:false',或者在$ .get'請求前調用'$ .ajaxSetup([cache:false})''。 –

+0

wm.wav和wb.wav文件的大小是多少?你嘗試沒有加載這些文件的行嗎? –

回答

0

我發現是什麼導致了這個問題,它是導致它的document.write()。在我擺脫了document.write()之後,一切都很完美。謝謝

相關問題