1

我的项目中有一个 .html 文件,当我启动 UIWebView 以自动播放 Youtube 视频时,我会调用该文件。它看起来像这样:

<html>
<head>
    <script src="https://www.youtube.com/player_api"></script>
    <style>
        body, div {
            margin: 0px;
            padding: 0px;
        }
        </style>
</head>
<body>
    <div id="media_area"></div>
</body>
<script>
    var ytPlayer = null;

    function onYouTubePlayerAPIReady() {
        ytPlayer = new YT.Player('media_area', {height: '200', width: '320', videoId: '9bZkp7q19f0',
                                 playerVars: {'playsinline': 1},
                                 events: {'onReady': onPlayerReady}
                                 });
    }

    function onPlayerReady(e) {
        e.target.playVideo();
    }

    </script>
</html>

正如你所看到的,可以这么说,它里面有硬编码的 videoId。有没有办法让它成为一个变量并从我的视图控制器中调用它?就像是

HTMLFilewithVideo: vidID;

或者也许有更好的方法来做到这一点?

谢谢!

4

2 回答 2

2

您可以在页面加载后使用 @samir 建议的相同技术来操作 javascript,并将其放入您的 webview 委托的方法中。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [webView stringByEvaluatingJavaScriptFromString:@"var ytPlayer = null;function onYouTubePlayerAPIReady() {ytPlayer = new YT.Player('media_area', {height: '200', width: '320', videoId: '9bZkp7q19f0',playerVars: {'playsinline': 1},events: {'onReady': onPlayerReady}});}function onPlayerReady(e) {e.target.playVideo();}"];
}

我不确定这样的 javascript 是否会按建议工作(我只是盲目地复制它),但这是通过 webview 做你想做的事情的一种方法。

于 2013-06-04T15:06:32.687 回答
1

是的,您可以通过 JavaScript 函数执行此操作,然后使用您的UIWebView. 像这样的东西:

function javaScriptFunction {//Here you can access the html DOM and pass it the URL }

然后在您的目标 c 代码中,您可以使用UIWebViewmethode 调用它:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
于 2013-06-04T14:42:43.223 回答