Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让YouTube JS API与iOS协同工作,处理嵌入式SWF?_Javascript_Ios_Youtube_Youtube Api_Swfobject - Fatal编程技术网

Javascript 让YouTube JS API与iOS协同工作,处理嵌入式SWF?

Javascript 让YouTube JS API与iOS协同工作,处理嵌入式SWF?,javascript,ios,youtube,youtube-api,swfobject,Javascript,Ios,Youtube,Youtube Api,Swfobject,我正在使用YouTube的JS API和视频播放器,如下所示: <script type="text/javascript" src="swfobject.js"></script> <div id="ytapiplayer"> You need Flash player 8+ and JavaScript enabled to view this video. </div> <script type="t

我正在使用YouTube的JS API和视频播放器,如下所示:

  <script type="text/javascript" src="swfobject.js"></script>    

  <div id="ytapiplayer">
    You need Flash player 8+ and JavaScript enabled to view this video.
  </div>

  <script type="text/javascript">

    var params = { allowScriptAccess: "always" };
    var atts = { id: "myytplayer" };
    swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer&version=3","ytapiplayer", "425", "356", "8", null, null, params, atts);

  </script>

您需要启用Flash player 8+和JavaScript才能查看此视频。
var params={allowScriptAccess:“始终”};
var atts={id:“myytplayer”};
swfobject.embeddeswf(“http://www.youtube.com/v/VIDEO_ID?enablejsapi=1&playerapiid=ytplayer&version=3“,”ytapiplayer“,”425“,”356“,”8“,”空,空,参数,附件);
虽然这在我的电脑和Android设备上运行良好,但在iOS上,ytapiplayer div并没有变成嵌入式播放器,而是只显示其原始内容,即错误消息说需要Flash player 8+和JS

有可能在iOS上运行我的这个吗?如果是,怎么做


提前谢谢

也许你应该试试新的YouTube iframe播放器API

它与移动设备一起工作,而不考虑闪存。 嵌入示例:

<script type="text/javascript" src="//www.youtube.com/iframe_api"></script>

function onYouTubePlayerAPIReady() {
    var videoBox = document.getElementById('video1');
    videoBox.ytplayer = new YT.Player(videoBox, {
        videoId: 'kXDiGtgPL6E',
        playerVars: {
            //controls: 0,
            wmode:'transparent'
        },
        height: '200',
        width: '320'
    });
}

函数onYouTubePlayerAPIReady(){
var videoBox=document.getElementById('video1');
videoBox.ytplayer=新的YT.Player(videoBox{
videoId:'kXDiGtgPL6E',
playerVars:{
//控件:0,
wmode:“透明”
},
高度:'200',
宽度:“320”
});
}

几个月前,我为一个项目做了这件事

Javascript,与您拥有的非常相似:

<script type="text/javascript" src="js/swfobject.js"></script>
        <script type="text/javascript">
            var flashvars = {};
                flashvars.youTubeVideo = "VitQwgsBq-w";
                flashvars.controllerAlign = "top";
                flashvars.queTo = "0";
                flashvars.controlBarAlpha = ".3";
            var params = {};
            var attributes = {};
                swfobject.embedSWF("images/youTubeLoader.swf", "youTubeDiv", "250px", "200px", "9.0.0", false, flashvars, params, attributes);
</script>

var flashvars={};
flashvars.youTubeVideo=“VitQwgsBq-w”;
flashvars.controllerAlign=“top”;
flashvars.queTo=“0”;
flashvars.controlBarAlpha=“.3”;
var params={};
var属性={};
swfobject.embeddeswf(“images/youTubeLoader.swf”、“youTubeDiv”、“250px”、“200px”、“9.0.0”、false、flashvars、params、attributes);
js将要做的是查找名为“youTubeDiv”的HTML div,并用SWF youtube播放器替换它的所有内容

(我做了这个b/c,iframe解决方案与我正在从事的HTML5项目存在z索引问题)

现在,HTML:

    <div id="youTubeDiv">
            <iframe width="250px" height="200px" src="http://www.youtube.com/embed/VitQwgsBq-w" frameborder="0" allowfullscreen></iframe>
    </div>


这会显示视频,但会使播放器对任何API操作(播放新视频、更改音量、事件更改等)无响应。这很有效,谢谢。然而,我的OnStateChange函数现在都被调用了两次。因为我的脚本认为已经播放了两个视频(state==end),而实际上只有一个,所以把一切都搞砸了。这几乎就是一系列事件:播放器结束->初始化新视频->播放器结束(错误)->初始化下一个视频->播放成功(但是上一个视频被跳过了,因为API报告它在开始播放之前就已经结束了),不知道为什么会发生这种情况……也许你可以将代码放到JSFIDLE?您还可以在每个视频后重新嵌入播放机,作为临时解决方法。