我已经设置了一些 HTML5,一切都在跨浏览器加载。
我需要执行以下事件来拉取视频尺寸:
$('#video').on('loadedmetadata',function(){
var width=this.videoWidth, height=this.videoHeight;
alert("meta has loaded!")
});
这会在所有浏览器中发出警报,Safari 除外。我一直在努力弄清楚为什么加载的元数据没有触发,但后来意识到如果我开始播放电影......它就会触发。
但是,我需要先检索视频的尺寸,然后才能播放它。有没有办法在 Safari 中做到这一点
- 强制 Safari 像其他浏览器一样提前加载元数据?
- 使用加载元数据以外的其他方法?
更新:这是来自苹果网站的确切代码:
<!doctype html>
<html>
<head>
<title>Resizing Movies</title>
<script type="text/javascript">
// set height and width to native values
function naturalSize() {
var myVideo = document.getElementsByTagName('video')[0];
myVideo.height = myVideo.videoHeight;
myVideo.width = myVideo.videoWidth;
alert("pulling dimensions!")
}
// register listener function on metadata load
function myAddListener(){
var myVideo = document.getElementsByTagName('video')[0];
myVideo.addEventListener('loadedmetadata', naturalSize, false);
}
</script>
</head>
<body onload="myAddListener()">
<video src="http://homepage.mac.com/qt4web/myMovie.m4v" controls>
</video>
</body>
</html>
但是,在调用视频之前,事件侦听器不会触发。这意味着在视频开始播放之前我无法拉出尺寸。这会在其他浏览器中发出警报,但不会在 Safari 中发出警报,因为(我猜)它是如何加载视频的。
所以,我不确定如何解决这个问题。
谢谢!