Я пытаюсь управлять объектом QuickTime, который я встроил в веб-страницу, используя JavaScript, и хочу слушать и реагировать на события DOM, которые выдает объект. Apple опубликовала учебник по этому вопросу , который, похоже, не работает вообще. Код, который я сделал, используя их документацию, выглядит следующим образом:
$(document).ready( function() {
$('#plugin').html( QT_GenerateOBJECTText( 'http://streaming1.wecreate.com:443/ckkw_kfun.mp3' , '300', '300', '', 'obj#ID', 'qt', 'emb#ID', 'qt', 'emb#NAME', 'qt', 'postdomevents', 'true', 'EnableJavaScript', 'true', 'autoplay', 'true' ) );
qt = document.getElementById('qt');
if(!qt ) {
alert("Couldn't get QT Handle");
}
RegisterListeners();
});
function myAddListener(obj, evt, handler, captures) {
if ( document.addEventListener )
obj.addEventListener(evt, handler, captures);
else
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);
}
function RegisterListeners() {
RegisterListener('qt_begin', 'qt', 'qt', qtStateChanged);
RegisterListener('qt_play', 'qt', 'qt', qtStateChanged);
RegisterListener('qt_pause', 'qt', 'qt', qtStateChanged);
}
function qtStateChanged() {
alert("State Changed!");
}
Этот код не так чист, как мог бы - я должен был нести объект qt через все это, но я хотел оставить его как можно ближе к демонстрационному коду Apple, насколько это возможно.
В Firefox код успешно загружает объект QuickTime и начинает воспроизведение потока (согласно параметру автозапуска), но я не получаю ни одного вызова qtStateChanged (), хотя я установил параметры postdomevents и enablejavascript на объекте QuickTime.
В Chrome я получаю логотип QuickTime, но нет звука или элементов управления. Объект сообщает о событии qt_begin, и я получаю предупреждение JavaScript. В IE6 (у нас все еще есть технологически отсталые клиенты), проигрыватель загружается, но опция автозапуска не работает, а обратные вызовы JavaScript вообще не работают.
Я также пытался управлять плеером из JavaScript, опять же безрезультатно. Ниже приведены три различных оператора jQuery, которые пытаются приостановить проигрыватель. Ни один из них не работает ни в одном из трех браузеров, в которых я тестировал:
<p onclick="JavaScript:$(qt).Pause();">Suck it, Trebek</p>
<p onclick="JavaScript:$('#qt').Pause();">Suck it again, Trebek</p>
<p onclick="JavaScript:$('#plugin').Pause();">Suck it a third, Trebek</p>
Есть ли у кого-нибудь понимание этой связи между JavaScript и QuickTime? Учебник, который не был написан 10 лет назад, был бы очень кстати.
Спасибо.