2012-12-14 27 views
3

錨鏈接卸載HTML5視頻我有一個<video>標籤和電子郵件錨鏈接一個非常簡單的頁面:
http://jsfiddle.net/6GquX/3/至mailto:在Chrome

點擊Chrome瀏覽器(OS X 10.8 + Win7的,23.0電子郵件中的鏈接。 1271.97)調用beforeunloadchange事件並導致視頻卸載,這不是預期的結果。奇怪的是,如果我讓視頻緩衝一下,然後點擊電子郵件鏈接,視頻就會繼續播放並且不會卸載。

據我所知,這隻發生在Chrome和我真的在虧損。訪問任何HTML5視頻播放器網站(videojs,流媒體等),啓動HTML5視頻,然後立即模擬電子郵件點擊document.location.href = "mailto:[email protected]"在開發控制檯產生相同的錯誤。

不過,我傾向於認爲這是在爲我無法重現以上來自YouTube的HTML5播放器下載視頻的視頻已被編碼的方式:
http://jsfiddle.net/6GquX/4/source

1. YouTube是否有可能以特定的方式對其視頻進行編碼以解決此問題?
2.是否有任何策略/黑客可以用來解決這個問題?

更新:

這個問題似乎被鏈接到視頻的比特率。將上面的流式播放器示例重新編碼爲300kbps可解決此問題。 (A 400kbps的視頻仍然表現出了同樣的問題,不知道確切的門檻是什麼)

300kbps的例子在這裏:http://jsfiddle.net/6GquX/7/

希望這會在Chrome的未來版本中得到解決。

回答

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」添加到所有電子郵件定位標記。 –