私はJavascriptにかなり慣れておらず、メディアプレーヤーでクリックイベントを取得するのに苦労しています。私の目的は、プレーヤーの後ろにあるモーダルボックスに到達しないクリックをブロックすることです。
ここにhtmlの関連部分があります:
<div class="player_bg" id="mybg" style="display: none" onclick="close_over(this.id)">
<!-- onclick="close_over(this.id)" -->
<div class="video-modal" onclick="close_over(this.parentNode.id)"></div>
<div class="videoplayer">
<video id="myVideo" width="640" height="360" poster="" controls="controls" preload="auto" onclick="close_over(this.id)">
<!-- MP4 for Safari, IE9, iPhone, iPad, Android, and Windows Phone 7 -->
<source type="video/mp4" src="">
<!-- WebM/VP8 for Firefox4, Opera, and Chrome -->
<source type="video/webm" src="">
<!-- Ogg/Vorbis for older Firefox and Opera versions -->
<source type="video/ogg" src="">
<object width="640" height="360" type="application/x-shockwave-flash" data="../_styles/js/flashmediaelement.swf">
<param name="movie" value="flashmediaelement.swf" />
<param name="flashvars" value="controls=true&file=">
<img src="" width="320" height="220" title="No video playback capabilities, please download the video" alt="" >
</object>
</video>
</div>
</div>
これが私のJavaScriptです:
function close_over(who) {
if (who == "myVideo") {
} else {
el = document.getElementById("mybg");
el.style.display ="none";
//(el.style.display == "block") ? "none" : "block";
$('video, audio').each(function() {
$(this)[0].player.pause();
});
}
}
(ビデオモーダルは背景画像として定義されたボタンであり、「アクティブレイヤー」は「mybg」です)
これにより、クリックイベントが2回発生します。最初にそれを取得し、それは(私が望んでいたように)if句によってブロックされ、次にモーダルボックス(mybg)に到達し、else句(私は望まない)によって処理されます。
出発点として、私はこのjavascriptコードしか持っていませんでした:
function close_over(who) {
el = document.getElementById("mybg");
el.style.display ="none";
//(el.style.display == "block") ? "none" : "block";
$('video, audio').each(function() {
$(this)[0].player.pause();
});
}
(はい、この例では「who」は廃止されています)
コントロールの再生/一時停止ボタンをクリックすると、両方のスクリプトが正常に反応しますが、ビデオをクリックして一時停止したり、コントロールのタイムラインをクリックしたりしても反応しません。
何か案は?