【发布时间】:2014-05-23 22:46:47
【问题描述】:
我的目标是使用 quicktime 插件播放音频文件并监听音频结束事件,然后用另一个文件更新音频对象以播放等等
这是音频元素(我使用的是 primefaces4):
<h:panelGroup id="questionsAudioPG">
<object width="2" height="2" data="#{testBean.audioPath}" id="speechAudio"
name="speechAudio" >
<param name="CONTROLLER" value="false" />
<param name="AUTOPLAY" value="true" />
<param name="LOOP" value="false" />
<param name="POSTDOMEVENTS" value="true" />
<param name="ENABLEJAVASCRIPT" value="true" />
</object>
</h:panelGroup>
这是我的 javascript 代码:
<h:outputScript type="text/javascript">
$(document).ready(function(){
RegisterListener('qt_ended', 'speechAudio', 'speechAudio_embed', audioEndedEventFired);
});
function audioEndedEventFired() {
audioEnded();
}
function myAddListener(obj, evt, handler, captures) {
if (document.addEventListener)
obj.addEventListener(evt, handler, captures);
else
// IE
obj.attachEvent('on' + evt, handler);
}
function RegisterListener(eventName, objID, embedID, listenerFcn) {
var obj = document.getElementById(objID);
if (!obj)
obj = document.getElementById(embedID);
if (obj)
myAddListener(obj, eventName, listenerFcn, false);
}
</h:outputScript>
现在发生的事情是我的侦听器第一次正常工作,但是在我的处理函数通过 ajax 更新页面后,该事件再也不会触发了!
我猜这是因为 DOM 发生了变化,我需要在每次 ajax 更新到音频元素后再次重新注册事件监听器。
顺便说一句:qt 事件仅在 chrome 上触发,而不在 firefox 中触发。
感谢任何帮助。
【问题讨论】:
标签: javascript jquery html ajax primefaces