我正在开发一个媒体播放器,我正在使用Windows Media ActiveX对象播放视频,我需要知道视频何时全屏播放。我找不到全屏事件,所以我必须找到解决方法。作为变通方法的一部分,我需要能够获取(最好是拦截)双击事件,该事件使媒体播放器全屏显示,但是当播放器开始播放时,我无法获取该事件,大概是因为播放器采取它能够知道何时进入全屏。
我已经尝试了许多不同的方法来在播放时获得事件:
activeXElement.attachEvent('ondblclick',function(){alert('Double Click')});
activeXElement.attachEvent('dblclick',function(){alert('Double Click')});
activeXElement.attachEvent('ondoubleclick',function(){alert('Double Click')});
activeXElement.attachEvent('doubleclick',function(){alert('Double Click')});
activeXElement.attachEvent('DoubleClick',function(){alert('Double Click')});
activeXElement.attachEvent('onDoubleClick',function(){alert('Double Click')});
activeXElement.attachEvent('OnDoubleClick',function(){alert('Double Click')});
activeXElement.ondblclick=function(){alert('Double Click')};
activeXElement.dblclick=function(){alert('Double Click')};
activeXElement.ondoubleclick=function(){alert('Double Click')};
activeXElement.doubleclick=function(){alert('Double Click')};
activeXElement.DoubleClick=function(){alert('Double Click')};
activeXElement.onDoubleClick=function(){alert('Double Click')};
activeXElement.OnDoubleClick=function(){alert('Double Click')};
当它尚未开始播放时,以下两个工作:
activeXElement.attachEvent('doubleclick',function(){alert('Double Click')});
activeXElement.attachEvent('DoubleClick',function(){alert('Double Click')});
播放时它们都没有工作。有没有人对如何在播放 ActiveX 对象时获取双击事件有任何想法?
我最终为这个问题创建了一个解决方法。我在这里发布它,供可能遇到此问题的其他人使用。
我侦听单击事件,当单击元素时,像全屏显示时一样隐藏控件。然后,稍后(给双击时间),检查它是否全屏,如果没有再次隐藏控件。我不得不暂时显示控件,因为一旦全屏显示,我就无法隐藏或显示控件。
这是我使用的代码:
activeXElement.attachEvent('click',
function(nButton){
if(nButton!=1)return;// Not left click
// I can't set uiMode when full screen.
// Set it now and set it back later if needed.
activeXElement.uiMode='full';
setTimeout(
function(){
if(activeXElement.fullScreen){
// It went full screen.
// Do some stuff...
}
else activeXElement.uiMode='none';
}
,750);
}
);