PhoneGap и iPhone со встроенным видео YouTube, проблема прокрутки трансформации - PullRequest
3 голосов
/ 12 мая 2011

Я встраиваю видео YouTube в свое приложение для iPhone PhoneGap

Например,

<embed id="yt" src="http://www.youtube.com/v/myvidid" width="300" height="199"></embed>

Все это прекрасно работает, так как iPhone распознает их как видео YouTube и вставит изображение плаката итакже вызовите приложение YouTube по клику.Однако проблема в том, что эти встраивания YouTube находятся в области прокручиваемого контента, для чего я использую преобразования CSS для перемещения вверх и вниз с помощью сенсорной прокрутки.Когда пользователь прокручивает область, видео остается неподвижным в фиксированном положении поверх моего контента.Неважно, какой CSS я добавляю к встраиваниям, похоже, ничто не изменит это поведение.

Кто-нибудь сталкивался с таким поведением ранее или нашел исправление.

Большое спасибо.

Andrew

Ответы [ 2 ]

5 голосов
/ 10 июня 2011

У меня та же проблема, и мне пришлось использовать следующий обходной путь:

  1. рисование изображений с миниатюрами видео внутри скроллера
  2. поместите кнопку воспроизведения поверх миниатюры
  3. обрабатывать событие клика, чтобы показать видео вне скроллера

С таким кодом:

var videos = [];
$('#scroller object').each(function(i,el){
    var movie = $(el).attr("data").replace(/^.*youtube\.com\/v\//,"");
    var width = $(el).attr("width");
    var height = $(el).attr("height");
    var html = '<object style="margin-left:12px;margin-top:10px;" id="video" width="296" height="222" data="http://www.youtube.com/v/'+movie+'" type="application/x-shockwave-flash">' + 
    '<param name="allowfullscreen" value="true" />'+
    '<param name="wmode" value="transparent" />'+
    '<param name="src" value="http://www.youtube.com/v/'+movie+'" />'+
    '</object>';
    videos.push(html);
    var thumb = "http://img.youtube.com/vi/"+movie+"/0.jpg";
    $(el).replaceWith('<div id="video-'+i+'" style="width:240px;height:184px;background:url('+thumb+') no-repeat;background-size: 100%;"><div class="play-button"></div></div>');
    $("#video-"+i).click(function(e,el){loadVideo(this)});
});

CSS-код для кнопки оплаты

.play-button {
    position: absolute;
    width: 240px;
    height: 184px;
    background: url(images/youtube_play.png) no-repeat;
    background-size: 100%;
    background-position: center center;
}

Макет функции loadVideo:

function loadVideo(el){
    var id = el.id;
    if (!id) {
        //play button clicked
        id = $(el).parent()[0].id;
    }
    id = id.replace("video-","");
    var html = videos[id];
    //html contains <object> tag
    $('#video-overlay').html(html).show();
}
1 голос
/ 15 мая 2012

Вот хороший урок, который спас мой день

http://eisabainyo.net/weblog/2012/01/24/embed-a-youtube-video-iframe-in-phonegap-app/

Также я публикую некоторые коды для быстрого доступа.

<html>
    <head>
        <title>YouTube video</title>
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
        <meta name="apple-mobile-web-app-capable" content="yes" />
        <meta name="apple-mobile-web-app-status-bar-style" content="black" />
        <script src="phonegap-1.2.0.js"></script>
    </head>
    <body>

        <iframe width="560" height="315" src="http://www.youtube.com/embed/9HDeEbJyNK8" frameborder="0" allowfullscreen></iframe>

    </body>
</html>

Затем внесите следующие изменения в Phonegap.plist

![MediaPlaybackRequiresUserAction: NO
AllowInlineMediaPlayback: YES
OpenAllWhitelistURLsInWebView: YES
ExternalHosts
          *.youtube.com
          *.ytimg.com][2]

Видео будет воспроизводиться на вашем симуляторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...