0

我正在使用 ajax 来刷新 div 的内容。在该 ajax 脚本中,一个名为 myTasks 的新计数在会话变量 ( $_SESSION['myTasks']) 中创建。

同样在该 ajax 脚本中,在将会话值重新分配给新值之前,我正在对照会话值检查新值。如果新值大于会话变量中的值,我想播放铃声 - 长度约为 2 秒。我有以下代码可以播放铃声:

<audio src="./sounds/newTask.wav" id="newTaskSound" preload="auto"></audio>

从它开始播放声音的意义上说,这工作得很好。但是,我的 ajax 计时器设置为每秒关闭一次,因此声音在播放中途被切断(充其量)......更多时候不是,只有四分之一的铃声正在播放。

我想做的是:如果新的 myTasks 计数大于会话变量,则在主页中调用一个 javascript 函数(同一个包含 ajax 调用函数)。

我的问题是:如何让 ajax“子”调用 html“父”函数?我尝试了几件事,例如:

<script type='text/javascript'>window.top.playNewTask.call();</script>

但我什么也做不了。

有没有办法从 ajax 孩子调用 javascript 函数?

4

1 回答 1

0

我希望看到更多您的代码,以便更好地了解您是如何执行此操作的。

如果您使用的是 iframe,则只能在页面的 url 和 iframe 匹配的情况下调用父(顶部)窗口中的函数。

否则,没有理由使用 window.top,因为这两个函数都在同一个文档范围内。

您还可以考虑为标签设置一个删除计时器-在 2(或 2.5,为了安全)秒后<audio>使用并删除此音频标签。setTimeout然后附加新的音频标签。这应该可以防止铃声被切断,如果每次检查时整数都增加,则会给你重叠的铃声。

您还可以使用 asetTimeout更改变量,并防止音频标签在播放完成之前被替换。

于 2012-10-30T14:04:14.377 回答