mailto:锚点链接在Chrome中卸载HTML5视频

3
我有一个非常简单的页面,其中包含一个<video>标签和一个电子邮件锚链接:http://jsfiddle.net/6GquX/3/。在Chrome(OS X 10.8 + Win7,23.0.1271.97)中单击电子邮件链接会调用beforeunloadchange事件并导致视频卸载,这不是期望的结果。
奇怪的是,如果我让视频缓冲一下,然后再点击电子邮件链接,视频就会继续播放而不会卸载。
据我所知,这只发生在Chrome中,我真的不知道该怎么办。访问任何HTML5视频播放器网站(videojs、flowplayer等),启动HTML5视频,然后立即使用开发人员控制台中的document.location.href = "mailto:foo@bar.com"模拟电子邮件单击会产生相同的错误。
但是,我倾向于认为这是视频编码方式的问题,因为我无法通过从YouTube的HTML5播放器下载的视频重现上述问题:http://jsfiddle.net/6GquX/4/)。 1.是否可能YouTube以特定方式编码其视频以解决此问题?
2.有什么策略/黑客可以用来解决这个问题吗? 更新:
该问题似乎与视频比特率有关。将flowplayer示例重新编码为300kbps可解决该问题。(400kbps的视频仍会出现相同的问题,不确定确切的阈值是多少)
300kbps示例在这里:http://jsfiddle.net/6GquX/7/ 希望这个问题能在Chrome的将来版本中得到解决。
1个回答

1

我刚刚遇到了你所描述的错误。

我的解决方法是在有人点击mailto链接后,简单地再次播放视频。

$('.email').click(function(e){
    e.preventDefault();
    document.location.href = $(this).attr('href');
    setTimeout(
        function(){
            // video.js handle (insert whatever call you want to play the video)
            _V_.players.video.play();
        },
        2000
    );
});

1
一个替代方案(不太优雅/用户友好)是在所有电子邮件锚点标记中添加 target="_blank"。 - Robin Pyon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接