mailto:anchor链接在Chrome中卸载html5视频

时间:2012-12-14 17:02:01

标签: javascript html google-chrome video html5-video

我有一个非常简单的页面,其中包含<video>标记和电子邮件锚点链接:
http://jsfiddle.net/6GquX/3/

点击Chrome中的电子邮件链接(OS X 10.8 + Win7,23.0.1271.97)会调用beforeunloadchange事件并导致视频卸载,这不是理想的结果。

奇怪的是,如果我稍微让视频缓冲区然后点击电子邮件链接,则视频会继续播放而不会卸载。

据我所知,这只发生在Chrome中,我真的很茫然。访问任何HTML5视频播放器网站(videojs,流动播放器等),启动HTML5视频,然后立即模拟在开发控制台中使用document.location.href = "mailto:foo@bar.com"的电子邮件点击产生相同的错误。

但是,我倾向于认为这是视频编码的方式,因为我无法使用从YouTube的HTML5播放器下载的视频重新创建上述内容:
http://jsfiddle.net/6GquX/4/source

1。 YouTube是否有可能以特定方式对其视频进行编码以对抗此问题?
2。我可以采用任何策略/黑客来解决这个问题吗?

更新

这个问题似乎与视频的比特率有关。将上述流动播放器示例重新编码为300kbps可解决此问题。 (400kbps的视频仍会出现同样的问题,不确定确切的阈值是什么)

300kbps示例:http://jsfiddle.net/6GquX/7/

希望这将在未来的Chrome版本中得到解决。

1 个答案:

答案 0 :(得分: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
    );
});