【问题标题】:mailto: anchor links unloading html5 video in Chromemailto:在 Chrome 中卸载 html5 视频的锚链接
【发布时间】:2012-12-02 17:10:54
【问题描述】:

我有一个非常简单的页面,带有一个<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/ (source)

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

更新:

这个问题似乎与视频的比特率有关。将上面的 flowplayer 示例重新编码为 300kbps 可以解决问题。 (400kbps 的视频仍然存在同样的问题,不确定确切的阈值是多少)

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

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

【问题讨论】:

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


    【解决方案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
        );
    });
    

    【讨论】:

    • 另一种(不太优雅/用户友好)的解决方案是简单地将 target="_blank" 添加到所有电子邮件锚标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2013-09-03
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多