我使用ajax刷新div的内容。在ajax脚本中,在会话变量($_SESSION['myTasks']
)中创建了一个名为myTasks的新计数。
同样在该ajax脚本中,我在将会话值重新分配给新值之前检查会话值的新值。如果新值大于会话变量中的值,我想播放一个响铃声 - 大约2秒钟。我有以下代码来播放铃声:
<audio src="./sounds/newTask.wav" id="newTaskSound" preload="auto"></audio>
在它开始播放声音的意义上,它工作得很好。然而,我的ajax定时器设置为每秒关闭,因此声音在播放的一半时被切断(充其量)...更常见的是,只有四分之一的铃声被播放。
我想要做的是:如果新的myTasks计数大于会话变量,请在主页面中调用javascript函数(包含ajax调用函数的函数)。
我的问题是:如何让ajax“child”调用html“parent”函数?我尝试过几件事,比如:
<script type='text/javascript'>window.top.playNewTask.call();</script>
但我无法工作。
有没有办法从ajax孩子调用javascript函数?
答案 0 :(得分:0)
我希望看到更多代码,以便更好地了解您是如何做到这一点的。
如果你正在使用iframe,那么只有在页面的网址和iframe匹配的情况下才能在父(顶部)窗口中调用函数。
否则,没有理由使用window.top,因为两个函数都在同一个文档范围内。
您还可以考虑为<audio>
标记设置删除计时器 - 使用setTimeout
并在2(或2.5,为安全)秒后删除此音频标记。然后添加新的音频标签。如果每次检查时整数都增加,这应该可以防止响铃切断,并为您提供重叠的响铃声。
您还可以使用setTimeout
更改变量,并防止音频标记在完成播放之前被替换。