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,如果用户安装了 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

切换到Flash作为主要播放器,您可以通过添加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

我相信 Mike 的问题是 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

Hack-tastic 解决方案

严重地。如果有人有更好的解决方案,请告诉我。

当 JWPlayer 检测到兼容 HTML 5 的浏览器时,它会呈现 HTML 5 版本的视频播放器。控制栏按钮是<button>元素,默认情况下会导致 ASP.NET 验证器触发,进而导致回发。

使用 Javascript/JQuery,我尝试将onclick所有按钮的属性设置return false;window.onload事件。但是,由于某种原因,在页面生命周期中的那个时候还没有呈现播放器——JQuery 选择器$("button")返回了 0 个元素。

所以这就是我最终要做的。如前所述,这是hack-tacular,我讨厌它。希望 Longtail 能尽快解决这个问题。

<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 回答