0

我使用情节提要对象和此代码在 Objective-C 中创建了 UIWebView。

[videoView setDelegate:self];
NSString *preURL = @"http://example.com/videoscript.php";
NSString *fullURL = [preURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[videoView loadRequest:requestObj];

WebView 打开包含此内容的链接

<head>
<script src="http://www.youtube.com/player_api?enablejsapi=1&version=3"></script>

        <script language="javascript">
    //Load player api asynchronously.
    //var tag = document.createElement('script');
    //tag.src = "https://www.youtube.com/iframe_api";
  //  var firstScriptTag = document.getElementsByTagName('script')[0];
    //firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    //var done = false;
    //var player;
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '100%',
          width: '100%',
          videoId: 'JW5meKfy3fY',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          },
          playerVars: {
              'controls': '0',
              'showinfo': '0',
              'showsearch': '0',
              'loop': '1',
              'embedjsapi': '1',
              'qutoplay': '1'
          }
        });
    }
    function onPlayerReady(evt) {
        evt.target.playVideo();
    }
    function onPlayerStateChange(evt) {

    }
    function stopVideo() {
        player.stopVideo();
    }

        </script>
</head>

令人困惑的部分是脚本在桌面浏览器中运行良好,但在 iOS 的 Safari 和 UIWebView 中它不起作用。我认为这是缺少 Adob​​e Flash Player 的问题,但我认为使用 javascript 创建 iFrame 与使用实际标签相同?当我使用标签时,这确实有效,但该方法不适合我。所以我的问题是,有没有直接使用 Javascript 而不是 iFrames 嵌入 HTML5 YouTube 播放器?

4

1 回答 1

0

据我了解,您使用的API确实需要 Flash Player,因此无法在 iOS 上运行。在“要求”下,它说:

最终用户必须安装 Flash Player 10.1 或更高版本才能正确查看所有内容。由于这个要求,我们建议使用 SWFObject 嵌入 SWF 并检测用户的 Flash Player 版本。

请注意,iFrame 只是嵌入另一个文档,并不一定暗示该文档是什么——它仍然可以是 Flash Player 嵌入。

如果您希望轻松绕过 Flash Player 问题,以下 JavaScript 肯定可以在 UIWebView 中工作。但是,它不会为玩家提供相同级别的自定义。

var iframe = $("<iframe>");

iframe.attr({
    width: "100%",
    frameborder: 0,
    src: "//www.youtube.com/embed/JW5meKfy3fY"    
});

// Or, append directly to body.
$("#viewport").append(iframe);

只需将 iOS 应用程序中的这一行切换到演示 url即可进行测试。

NSString *preURL = @"http://jsfiddle.net/KrshC/1/embedded/result/";
于 2013-09-01T03:47:29.910 回答