我正在使用cordova开发iphone app开发。我想在InAppBrowser
中播放YouTube视频。在我的场景中,我有一个视频缩略图轨道,基本上那些是youtube视频。当我们点击它时,它需要打开一个html页面,其中包含Phonegap
InAppBrowser
内的youtube播放器,因为我写的是,
var ref = null;
function openVideo(Id)
{
try {
ref = window.open('video.html?id='+Id,'_blank','location=no');
ref.addEventListener('loadstop', LoadStop);
ref.addEventListener('exit', Close);
}
catch (err)
{
alert(err);
}
}
function LoadStop(event) {
//some code
}
function Close(event) {
ref.removeEventListener('loadstop', LoadStop);
ref.removeEventListener('exit', Close);
}
我的video.html可以使用以下代码
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0px 0px 0px 0px;
}
</style>
</head>
<body>
<div id="player"></div>
<script>
var tag = document.createElement('script');
tag.src = "http://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady()
{
player = new YT.Player('player',
{ videoId: 'mQGTXhqVmCQ',
playerVars: { 'html5': 1},
events: { 'onReady': onPlayerReady,'onStateChange':onPlayerStateChange }
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
//needs to close in app browser here
window.close();
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>
这里我附上截图,
这里我正面临的问题是,
1,点击缩略图在InAppBroser中打开video.html
2,首次视频加载和视频在默认的iphone浏览器中播放。看完视频用户后,点击“完成”按钮返回应用程序。
3,但他看到带有youtube播放器的video.html页面暂停按钮和完成按钮返回应用程序。
这意味着他需要点击默认播放器中的按钮1和InAppBrowser
中的另一个按钮。这将成为用户界面错误。所以当他点击播放器中的完成按钮时,我需要将用户备份到应用程序。为此,我需要能够在youtube视频播放时关闭InAppBrowser
窗口但我无法获得InAppBrowser
的引用,因为两者都在不同的页面中。我在onstatechanged方法youtube播放器中尝试过window.close()。但它对我没有帮助。那么当你播放视频时我怎么能关闭InAppBrowser
窗口。请指导我。