4

ユーザーが再生/一時停止、音量、または全画面表示ボタンをクリックすると、ページはポストバックを実行します。これは、Windows と Mac の両方の Chrome 23、IE 9、Safari 5 で見られます。Firefox 17 と Opera 12 は問題ありません。最善の方法は、おそらく Safari の全画面表示である必要があります。

ビデオを埋め込むために使用しているコードは次のとおりです。

<div id='my-video'></div>
<script type='text/javascript'>
    jwplayer('my-video').setup({
         file: '/videos/Penultimate_Md.mp4',
         image: '/videos/penultimate_first.png',
         width: '480',
         height: '270',
         });
</script>

これはどのように解決できますか?これは私とは関係のない単なるバグですか?

確認済み

HTML5 ビデオ プレーヤーのバグです。コントロール バーの入力はすべて html ボタンであり、ASP バリデーターが起動します (指摘してくれた @Lando に感謝します)。Longtail によると、次のリリースで修正される予定です。primary: flash,ユーザーがフラッシュをインストールしていれば、追加できます。

4

3 に答える 3

2

本当にバグかどうかはわかりませんが、ページ内の次のコードがJWPlayerの設定と競合しています。

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

どういうわけか、プレーヤーのhtmlバージョンがトリガー__doPostBackされ、それがトリガーされtheForm.submit()、最後にページがリロードされます。

回避策1

プレーヤーをフォームの外に置きます。

回避策2

プライマリプレーヤーとしてフラッシュに切り替えprimary: 'flash'ます。セットアップに追加することでこれを行うことができます。以下のコードを参照してください。

jwplayer('my-video').setup({
     file: '/videos/Penultimate_Md.mp4',
     image: '/videos/penultimate_first.png',
     width: '480',
     height: '270',
     primary: 'flash'
});

もちろん、フラッシュが利用できない場合、これは問題を解決しません。

于 2012-12-10T19:07:40.947 に答える
2

マイクの問題は、jwplayer の読み込みが完了していないことだと思います。プレーヤーのロード後にイベントに追加するだけです。これは私のコードで機能しました

    <div id="my-video">Loading the player...</div>
    <script type='text/javascript'>
        $(document).ready(function () {
            jwplayer('my-video').setup({
                playlist: [{
                    sources: [{ file: 'SampleVideo.mp4' }]
                }]
            });
            jwplayer().onReady(function (event) {
                $('#my-video button').on('click', function (event) { return false; });
                alert('Ready');
            });
        });
    </script>
于 2013-03-05T18:32:55.640 に答える
1

ハック-素晴らしいソリューション

真剣に。誰かがより良い解決策を持っているなら、教えてください。

JWPlayerがHTML5準拠のブラウザーを検出すると、HTML5バージョンのビデオプレーヤーをレンダリングします。コントロールバーボタンは<button>要素であり、デフォルトでASP.NETバリデーターが起動し、これによりポストバックが発生します。

Javascript / JQueryを使用して、イベントonclickですべてのボタンの属性をに設定しようとしました。ただし、何らかの理由で、プレーヤーはページのライフサイクルのその時点でレンダリングされていません。JQueryセレクターは0個の要素を返しました。return false;window.onload$("button")

これが私がやったことです。すでに述べたように、これはハックタキュラーであり、私はそれを嫌います。うまくいけば、ロングテールはこれをすぐに修正します。

<div onclick="disableButtons(); return false;" >                
    <div id='my-video'></div>
    <script type='text/javascript'>
        jwplayer('my-video').setup({
            file: '/videos/Penultimate_Md.mp4',
            image: '/videos/penultimate_first.png',
            width: '480',
            height: '270'
            });

function disableButtons() {
    var buttons = $("my-video button");
    buttons.attr('onclick', 'function () { return false; }');

    </script>
</div>

したがって、ユーザーが<div>プレーヤーを含むをクリックするたびに、すべてのボタンがに設定されreturn false;ます。注意これは、ページ上のすべてのボタンに適用されます。ページに他のボタンがある場合は、それらにも影響します。@goodwinceの提案を取り入れました。これは、指定された内のボタンのみを対象としていますdiv

于 2012-12-11T15:34:14.713 に答える