Mediaelement,js canplay事件未被解雇

时间:2014-11-25 22:53:28

标签: mediaelement.js

我正在使用Mediaelement.js ver:2.16.2 如果使用youtube插件并且使用IFrame渲染插件,则不会触发canplay envent。

如果这是一个已知错误或应该有效吗?

我应该补充一点,Youtube插件与IFrame的合并发生在Android设备上。

我查看了源代码,如果我没有弄错,那就是“可以播放'使用iframe时不会调用event。

应该这样:

mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay');
在iframe' onready'中调用

代码事件

使用iframe的Youtube插件:

iFrameReady: function () {
    this.isLoaded = true;
    this.isIframeLoaded = true;

    while (this.iframeQueue.length > 0) {
        var settings = this.iframeQueue.pop();
        this.createIframe(settings);
    }
}
createIframe: function (settings) {

    var
    pluginMediaElement = settings.pluginMediaElement,
    player = new YT.Player(settings.containerId, {
        height: settings.height,
        width: settings.width,
        videoId: settings.videoId,
        playerVars: { controls: 0 },
        events: {
            'onReady': function () {

                // hook up iframe object to MEjs
                settings.pluginMediaElement.pluginApi = player;

                // init mejs
                mejs.MediaPluginBridge.initPlugin(settings.pluginId);

                // create timer
                setInterval(function () {
                    mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
                }, 250);
            },
            'onStateChange': function (e) {

                mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement);

            }
        }
    });
}

带闪光灯的Youtube插件:

flashReady: function (id) {
    var
        settings = this.flashPlayers[id],
        player = document.getElementById(id),
        pluginMediaElement = settings.pluginMediaElement;

    // hook up and return to MediaELementPlayer.success 
    pluginMediaElement.pluginApi =
    pluginMediaElement.pluginElement = player;
    mejs.MediaPluginBridge.initPlugin(id);

    // load the youtube video
    player.cueVideoById(settings.videoId);

    var callbackName = settings.containerId + '_callback';

    window[callbackName] = function (e) {
        mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement);
    }

    player.addEventListener('onStateChange', callbackName);

    setInterval(function () {
        mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
    }, 250);

    mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay');
}

0 个答案:

没有答案