我有以下简单的两页html doc,它使用了Jquery Mobile:
<div data-role="page" id="main_page">
<ul id="test" data-role="listview">
<li><a href="#page_1" data-transition="slide">Video</a>
</li>
<li><a href="#page_1" data-transition="slide">Video</a>
</li>
</ul>
</div>
<div data-role="page" id="page_1" data-theme="a">Heres a youtube video:
<div id="youtubeVideo" data-theme="a" class="ui-content">
<iframe class="youtube-player" type="text/html" width="100%" src="http://www.youtube.com/embed/cTl3U6aSd2w" frameborder="0"></iframe>
And here's a html5 video:
<video width="100%" controls>
<source src="http://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
<source src="http://www.w3schools.com/html/mov_bbb.ogg" type="video/ogg">Your browser does not support the video tag.</video>
</div>
这是jsfiddle中的行动。
在Iphone上,如果您从第一页导航到第二页并播放YouTube视频,则所有内容均按预期工作。但是,如果您点击浏览器的后退按钮,然后再次导航回到YouTube视频,您会看到该窗口是黑色的,无法再次播放该视频。
我该如何解决这个问题?
请注意,我的目标是能够在移动平台上播放视频。
答案 0 :(得分:7)
一旦您再次访问该页面或离开该页面,您需要重新加载iframe
。
为iframe
提供ID或类
<iframe class="youtube-player" type="text/html" width="100%" src="http://www.youtube.com/embed/cTl3U6aSd2w" frameborder="0"></iframe>
克隆它并用其'clone。
替换现有的$(document).on("pagebeforeshow", "#page_1", function () {
var iframe_clone = $(".youtube-player").clone();
$(".youtube-player").replaceWith(iframe_clone);
});
您可以使用以下任何页面活动,pageshow
,pagebeforeshow
,pagehide
和pagebeforehide
。
Demo (1)
(1)在iPhone 5 iOS 7.0.4上测试 - Safari Mobile。
答案 1 :(得分:2)
最佳做法是在加载完成时重新加载src属性:
我在iframe中使用谷歌地图在地图页面上完成的示例:
$(document).delegate('.ui-page', 'pageshow', function () {
$("#mapframe").attr("src","https://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=624+Hill+Farm+Lane+Springfield,+PA&aq=&sll=39.930274,-75.289307&sspn=0.289068,0.580215&ie=UTF8&hq=&hnear=624+Hill+Farm+Lane+Springfield,+Pennsylvania 19064&t=m&ll=39.923297,-75.352306&spn=0.063191,0.109863&z=10&output=embed&iwloc");
});
在你的情况下:
$(document).delegate('.ui-page', 'pageshow', function () {
$(".youtube-player").attr("src","http://www.youtube.com/embed/cTl3U6aSd2w");
});
试一试。希望它有用!