我想自動播放電影並在UIWebView上自動播放下一部電影。我在UIWebView上嵌入了YouTube播放器,並使用了一些YouTube Player API for iFrame片段,但效果不佳。YouTube Player的事件不適用於UIWebView
HTML在下面。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style type="text/css">
body {
background-color: #000;
margin: 0;
}
</style>
</head>
<body>
<div id="player"></div>
<script>
var tag = document.createElement("script");
tag.src = "http://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player("player", {
height: "390",
width: "640",
videoId: "UqFvrjhbO8c",
events: {
"onReady": onPlayerReady,
"onStateChange": onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
document.location = "api://didEndedMovie";
}
}
</script>
</body>
</html>
當電影結束時,我想讓webview加載api://didEndedMovie
。然後,WebView委託將接收加載的事件,並調用下面的委託方法。
- (void)viewDidLoad
{
[super viewDidLoad];
if (!_htmlTemplate) {
NSString *path = [[NSBundle mainBundle] pathForResource:@"YouTubePlayer" ofType:@"html"];
_htmlTemplate = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
}
NSString *htmlString = [NSString stringWithFormat:_htmlTemplate];
[self.webView loadHTMLString:htmlString baseURL:nil];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *requestString = [[request URL] absoluteString];
// if delegate received requests like "api://*", this view controller
// will not move to other views.
if ([requestString rangeOfString:@"api://"].location == NSNotFound) {
return YES;
}
// called when the movie ended
if ([requestString isEqualToString:@"api://didEndedMovie"]) {
NSLog(@"didEndedMovie");
}
return NO;
}
但是,JavaScript不工作...不觸發的事件onReady
和onStateChange
。
在瀏覽器上,此javascript運行良好。
爲什麼不解除事件?
當我使用[webView loadRequest]。比我的視頻不工作。 – Raju
loadRequest用於加載遠程資源,而loadHTMLString用於應用程序中的本地html。 –
你可以loadRequest一個本地路徑 –