2013-08-31 3 views
0

Я создал UIWebView в Objective-C, используя объект раскадровки и этот код.Почему мой UIWebView не отображает Javascript-плеер YouTube iFrame?

[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> 

Запутанная частью, что функции скрипта штрафа в браузере настольного компьютера, но на Safari для прошивки и в UIWebView-х он не работает. Я предполагаю, что это недостаток Adobe Flash Player, но я думал, что создание iFrame с использованием javascript было таким же, как с использованием реальных тегов? Когда я использую теги, это работает, но этот метод не подходит для меня. Поэтому мой вопрос заключается в том, есть ли встраивание игрока YouTube HTML5 с использованием Javascript, а не iFrames напрямую?

ответ

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 к demo url для тестирования.

NSString *preURL = @"http://jsfiddle.net/KrshC/1/embedded/result/"; 
Смежные вопросы