0

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')};

再生が開始されていない場合は、次の 2 つが機能します。

activeXElement.attachEvent('doubleclick',function(){alert('Double Click')});
activeXElement.attachEvent('DoubleClick',function(){alert('Double Click')});

再生中はどれも機能していません。再生中に ActiveX オブジェクトでダブルクリック イベントを取得する方法について、何か考えがある人はいますか?

4

1 に答える 1

0

最終的に、この問題の回避策を作成しました。この問題に遭遇する可能性のある他の人のために、ここに投稿しています。

クリック イベントをリッスンし、要素がクリックされると、フルスクリーンになったときと同じようにコントロールを非表示にします。次に、後で (ダブルクリックする時間を与えます)、全画面表示になっているかどうかを確認し、そうでない場合は、コントロールを再び非表示にします。フルスクリーンになるとコントロールを非表示にしたり表示したりできないため、コントロールを一時的に表示する必要がありました。

使用したコードは次のとおりです。

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);
    }
);
于 2012-11-26T15:53:16.183 に答える