JavaScript视频库会覆盖彼此的功能

时间:2018-02-06 17:57:41

标签: javascript jquery events youtube-api youtube-data-api

我使用两个不同的库来嵌入YouTube视频。一个人工作正常,但如果我同时包括他们,第二个(取决于JavaScript包括订单)不起作用。控制台中没有错误,但我将其缩小到function onYouTubeIframeAPIReady() { console.log('ytplayer onYouTubeIframeAPIReady'); if (ytp.YTAPIReady) return; ytp.YTAPIReady = true; jQuery(document).trigger("YTAPIReady"); } 函数,该函数由两个库使用的YouTube-API调用。

第一个图书馆( jquery.mb.YTPlayer )称之为(第26行):

// Creates deferred so, other players know when to wait.
window.onYouTubeIframeAPIReady = function () {

    console.log("jarallax onYouTubeIframeAPIReady");

    window.onYouTubeIframeAPIReady = null;
    loadingYoutubeDeffer.resolve('done');
    callback();
};

第二个图书馆( jarallax )执行此操作(约665行):

console.log()

我添加了{{1}},只记录了其中一个。

我能做什么,以便调用这两个函数并正确初始化两个库?

1 个答案:

答案 0 :(得分:0)

由于全局函数window.onYouTubeIframeAPIReady jarallax 覆盖,我存储了之前对函数的任何引用并调用它:

// Creates deferred so, other players know when to wait.
var f = window.onYouTubeIframeAPIReady;
window.onYouTubeIframeAPIReady = function () {
    f();
    console.log("jarallax onYouTubeIframeAPIReady");

    window.onYouTubeIframeAPIReady = null;
    loadingYoutubeDeffer.resolve('done');
    callback();
};