0

ajax を使用して div の内容を更新しています。その ajax スクリプト内で、myTasks と呼ばれる新しいカウントがセッション変数 ( $_SESSION['myTasks']) に作成されます。

また、そのajaxスクリプト内で、セッション値を新しい値に再割り当てする前に、セッション値に対して新しい値をチェックしています。新しい値がセッション変数の値より大きい場合、約 2 秒の長さのチャイム音を鳴らしたいと思います。チャイム音を鳴らすための次のコードがあります。

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

これは、サウンドの再生を開始したという意味で問題なく機能しました。ただし、私のajaxタイマーは毎秒オフになるように設定されているため、サウンドは再生の途中で(せいぜい)途切れていました...多くの場合、チャイムの4分の1しか再生されていませんでした。

私がやりたいことは次のとおりです。新しい 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 を使用する理由はありません。

<audio>タグの削除タイマーを設定することも検討してsetTimeoutください。この音声タグを使用して、2 (または安全のために 2.5) 秒後に削除してください。次に、新しいオーディオ タグを追加します。これにより、チャイムが途切れることがなくなり、チェックするたびに整数が増加すると、チャイム音が重複するようになります。

a を使用しsetTimeoutて変数を変更し、再生が完了するまでオーディオ タグが置き換えられないようにすることもできます。

于 2012-10-30T14:04:14.377 に答える