可以从ajax孩子调用父javascript函数吗?

时间:2012-10-30 13:49:56

标签: javascript ajax

我使用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函数?

1 个答案:

答案 0 :(得分:0)

我希望看到更多代码,以便更好地了解您是如何做到这一点的。

如果你正在使用iframe,那么只有在页面的网址和iframe匹配的情况下才能在父(顶部)窗口中调用函数。

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

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

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