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