【发布时间】:2016-03-13 11:30:17
【问题描述】:
我正在尝试创建一个实时通知脚本,每次在我的文件中找到特定文本时,它都会播放声音。这是我尝试过的:
<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 浏览器上我得到了这个错误:
未捕获的 RangeError: 超出最大调用堆栈大小`
myfile.txt 动态变化,因此每次找到我要查找的文本或找不到它时,它都应该播放不同的声音,而无需我刷新浏览器。我该如何解决这个问题?
【问题讨论】:
-
你试过增加超时延迟吗?
-
这与问题无关,但请注意,您将
cache: false作为请求的参数发送,您并没有停止 jQuery 缓存响应。如果您想停止缓存,请使用$.ajax并设置cache: false,或者在您的$.get请求之前调用$.ajaxSetup([ cache: false })。 -
wm.wav 和 wb.wav 文件的大小是多少?您是否尝试过不加载这些文件的行?
-
您能否在jsfiddle.net 中设置此问题的示例,因为我看不出您在此代码中遇到错误的原因。你确定是这个代码块导致了问题吗?
-
在我看来,sn-p 中没有任何内容明显是“错误的”。你能缩小具体是什么破坏的范围吗?
标签: javascript jquery