gpt4 book ai didi

javascript - Safari 中的 HTML5 错误?使用本地文件时视频不工作

转载 作者:行者123 更新时间:2023-11-27 22:35:58 26 4
gpt4 key购买 nike

我尝试使用 HTML5 视频构建一个基于 JS 的本地媒体库。代码与此 JSBIN 中的相同,它适用于在线内容。但是当我将这段代码与本地文件一起使用时(就像你可以 find here 一样)Safari 会抛出错误

INVALID_STATE_ERR: DOM Exception 11: An attempt was made to use an object that is not, or is no longer, usable.

通过点击缩略图第三次启动视频后,这会打开播放器并加载视频 URL。

错误来自“$vplayer.currentTime = 0.0;”没有这一行,问题仍然存在,但根本不会引发任何错误。

我知道这个错误意味着视频没有加载,它是由 - 但为什么之前加载了前两次?

编辑:我还尝试了使用从“file://”到“file:///”的绝对路径的不同方法 - 没有任何变化。

编辑:我发现在使用 objective-c WebView 组件 (iOS) 的浏览器引擎时,此行为消失了。在使用 chrome 时也有效。所以这似乎是 Safari 的一个错误?

使用的代码:

<html>

<head>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
</head>
<body>

<div data-role="page" id="gamepad">
<div id="videolink">
</div>
<div data-role="popup" id="vplayerpopup" data-position-to="window" data-overlay-theme="a" data-theme="a" class="ui-content" data-tolerance="5,5,5,5" data-transition="fade">
<a href="#" data-rel="back" data-role="button" data-theme="a" data-icon="delete" data-iconpos="notext" class="ui-btn-right">Close</a>
<video id="vplayer" width="640" height="360" controls>
<source id="vsource" src="" type="video/mp4" />
</video>
</div>

</div>

</body>
</html>

var $videoblock =   '<div class="ui-block-a videoblock">'
+ ' <div class="videoPreviewImageWrapper">'
+ ' <a href="#vplayerpopup" data-rel="popup" onclick="mediathekVideolink = \'http://blog.gingertech.net/wp-content/uploads/2011/01/LCA_MM_AVProc2011/HelloWorld.mp4\';">'
+ ' <div class="videolink">'
+ ' <img src="http://leanbackplayer.com/videos/poster/sintel_640x360.jpg" width="218" height="164" alt="Movie Title">'
+ ' <div class="mediathek_film_titel">Movie Title</div>'
+ ' <div class="mediathek_film_dauer">03:56</div>'
+ ' <div class="mediathek_film_text">Some Text about the video</div>'
+ ' </div>'
+ ' </a>'
+ ' </div>'
+ '</div>';

$('#videolink').append($videoblock);

var mediathekVideolink = 'none';
var mediaplayerIsPlaying = false;

$( '#gamepad' ).live( 'pagebeforeshow', function(){

$( "#vplayerpopup" ).on({
popupbeforeposition: function(opt1, opt2) { //console.log('mediathekVideolink: ' + mediathekVideolink);
//console.log('popupbeforeposition');
$('#vsource').attr('src', mediathekVideolink);
var $vplayer = $('#vplayer').get(0);
if(!mediaplayerIsPlaying) {
$vplayer.load();
$vplayer.play();
mediaplayerIsPlaying = true;
}
},
popupafterclose: function() {
//console.log('popupafterclose');
mediaplayerIsPlaying = false;
var $vplayer = $('#vplayer').get(0); //console.log('currentTime: ' + $vplayer.currentTime); console.log('currentSrc: ' + $vplayer.currentSrc);
$vplayer.pause();
$vplayer.currentTime = 0.0;
}
});
});

$( '#gamepad' ).live( 'pagehide', function(){
$( "#vplayerpopup" ).off();

});

最佳答案

遗憾的是,许多浏览器不喜欢使用本地文件。 Firefox 没有这个特定问题,但它有其他问题(与 CSS/WOFF 字体相关)。

我使用的解决方案是有一个本地开发网络服务器(如 XAMPP ),然后使用各种网络浏览器进行测试。您应该能够将防火墙选项设置为仅允许 Apache 服务器在您的计算机上运行,​​而不允许在您的本地网络上运行。

此外,您还可以获得 PHP/Perl/等。和其他脚本语言,你不会只在本地文件上获得。

关于javascript - Safari 中的 HTML5 错误?使用本地文件时视频不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13806080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com