Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 2个脚本(FitVids.js、Vimeo.js)一起杀死了调用一个函数来播放视频,导致:VimeoAPI不是一个函数_Javascript_Jquery_Jquery Plugins_Vimeo - Fatal编程技术网

Javascript 2个脚本(FitVids.js、Vimeo.js)一起杀死了调用一个函数来播放视频,导致:VimeoAPI不是一个函数

Javascript 2个脚本(FitVids.js、Vimeo.js)一起杀死了调用一个函数来播放视频,导致:VimeoAPI不是一个函数,javascript,jquery,jquery-plugins,vimeo,Javascript,Jquery,Jquery Plugins,Vimeo,更新以下内容 好的,我这里有个问题。我使用这个优秀的vimeo课程让我的生活更轻松: (此处的源代码:) 我将它与fitvids.js一起使用,它非常棒,可以在这里找到: (源代码如下: 问题是,在firefox(OSX,尚未尝试WIN,但可能也会尝试)中,当我使用fitvids.js时,它会破坏vimeoAPI,因此我无法获取事件或告诉Vimeo.js播放视频,也无法停止它。不过,在Safari中,它的效果与预期(和想要的)一样 我知道这一定与fitvids.js将我的div(我的对象swf播

更新以下内容

好的,我这里有个问题。我使用这个优秀的vimeo课程让我的生活更轻松: (此处的源代码:)

我将它与fitvids.js一起使用,它非常棒,可以在这里找到: (源代码如下:

问题是,在firefox(OSX,尚未尝试WIN,但可能也会尝试)中,当我使用fitvids.js时,它会破坏vimeoAPI,因此我无法获取事件或告诉Vimeo.js播放视频,也无法停止它。不过,在Safari中,它的效果与预期(和想要的)一样

我知道这一定与fitvids.js将我的div(我的对象swf播放器所在的div)放入另一个div有关:

之前:

<div id="flashposition">
<object width="1280" height="720" type="application/x-shockwave-flash" 
id="flashpositionmyFlashID" data="http://www.vimeo.com/moogaloop.swf"><param 
name="swliveconnect" value="true"><param name="fullscreen" value="1"><param 
name="allowscriptaccess" value="always"><param name="allowfullscreen" value="true">
<param name="wmode" value="transparent"><param name="flashvars" value="clip_id=35083232&
amp;server=vimeo.com&amp;show_title=false&amp;show_byline=false&amp;show_portrait=0&
amp;fullscreen=true&amp;js_api=1&amp;js_onLoad=vimeo.vimeoLoaded&amp;color=00adef&
amp;wmode=transparent"></object>
</div>
哪个叫

vimeoAPI.api_play();
vimeoAPI的定义如下:

vimeoAPI = document.getElementById( vimeoContainer ).getElementsByTagName( "object" )[0];
vimeocontainer id在我的示例中是div id“flashposition”

因此,我的猜测是,它无法访问api,因为有一个带有class=“fluid width video wrapper”的新div

那么,我必须如何更改vimeoAPI以使其重新工作(如果这是罪魁祸首)

非常非常感谢

更新

代码现在可以在Firefox中使用,但前提是我将页面转到不同的URL(保持在同一个浏览器窗口中),然后按“后退”按钮。然后一切正常,vimeo API启动并运行。 但是我现在该怎么解决这个问题呢

以下是让我走到这一步的更新代码:

fitvids期望的是纯粹的宽度和高度,而不是添加px。因此,我将其从第137-138行的Vimeo.js代码中删除,结果是:

playerWidth = ( width.toString().search( 'px' ) != -1 || width.toString().search( '%' )     
!= -1 ) ? width.toString() : width;

playerHeight = ( height.toString().search( 'px' ) != -1 || height.toString().search( '%' 
) != -1 ) ? height.toString() : height;
然后我换了几行

this.vimeoLoaded = function() {
var NEWcontainer = vimeoContainer + "NEW";
$('.fluid-width-video-wrapper').attr('id', NEWcontainer);
$(document.getElementById( vimeoContainer ).getElementsByTagName( "object" )).attr('id', 
NEWcontainer);
container = NEWcontainer;
vimeoAPI = document.getElementById( vimeoContainer ).getElementsByTagName( "object" )
[0];
setupAddEventListener();
jQuery(document.getElementById( vimeoContainer )).fitVids();
dispatchEvent( this.VIMEO_LOAD_COMPLETE, null );
}
并最终正常调用Vimeo.js类:

var vimeo;
vimeo = new Vimeo( "flashposition", 1280, 720, "vimeo", showTitle=false);
vimeo.loadVideo( '35083232' );

vimeo.addEventListener( vimeo.VIMEO_LOAD_COMPLETE, video1Loading );

function video1Loading() {
vimeo.playVideo();
}

通过这种方式,它“工作”,但同样,只有在按下后退按钮时…:-(

在vimeo之前初始化fitvid(因为它更改了DOM)并在新的内部div上初始化vimeo

$(document).ready(function() {
    var $div = $("#flashposition");
    $div.fitVids();

    // grab the new div and give it an id (for vimeo to find)
    var vimeoID = 'vimeoPlayer';
    $div.children('div.fluid-width-video-wrapper').attr('id', vimeoID);

    // vimeo is not a jquery plugin and searches DOM by id
    var vimeo = new Vimeo(vimeoID, 480, 320, “vimeo”);

    //....

    vimeo.playVideo();
});

谢谢,但这不太好:-(现在我有一个空白屏幕,并且:Vimeo没有定义…好的,谢谢!越来越近,但仍然不能正常工作。我插入了您的代码并将其更改为我的设置,即:var vimeoID='flashposition';和:var Vimeo=new Vimeo(vimeoID,1280720,“Vimeo”,showttitle=false);但它仍然不起作用:-(FitVids没有被执行,也没有因此播放。console会叫vimeo,div没有定义…有什么想法吗?再次感谢。
var vimeoID=“flashposition”
是错误的,因为它指向outter div。您需要在内部div上初始化vimeo,但是vimeo只能通过“id”属性查找元素。内部div没有“id”,您必须添加一个任意的“id”(例如,“vimeoPlayer”),然后将该“id”传递给Vimeo构造函数。哇,太快了!;-)明白您的意思了!感谢您澄清了这一点。但即使我将其更改回“vimeoPlayer”(或其他任何形式,因为它不会产生差异,考虑到下面的$div.children…,对吗?),Vimeo.js也不会填充首先是“flashposition”div,因此fitvids也没有什么可处理的。在控制台中,我得到:document.getElementByID(vimeoContainer)为null(Vimeo.js,第86行)我是否错了,问题可能是,在调用Vimeo.loadVideo()之前,只有一个id为“flashposition”的空div,所以当我第一次给fitvids打电话时,它找不到任何东西来发挥它的魔力?对不起,如果我听起来很困惑(实际上是;-),或者我完全偏离了轨道?
var vimeo;
vimeo = new Vimeo( "flashposition", 1280, 720, "vimeo", showTitle=false);
vimeo.loadVideo( '35083232' );

vimeo.addEventListener( vimeo.VIMEO_LOAD_COMPLETE, video1Loading );

function video1Loading() {
vimeo.playVideo();
}
$(document).ready(function() {
    var $div = $("#flashposition");
    $div.fitVids();

    // grab the new div and give it an id (for vimeo to find)
    var vimeoID = 'vimeoPlayer';
    $div.children('div.fluid-width-video-wrapper').attr('id', vimeoID);

    // vimeo is not a jquery plugin and searches DOM by id
    var vimeo = new Vimeo(vimeoID, 480, 320, “vimeo”);

    //....

    vimeo.playVideo();
});