0

我正在尝试在网站上使用 MediaElement.js,并且在除 IE 之外的所有浏览器中一切都运行良好,尤其是 IE9(目前我不太关心支持低于 IE9)。我正在动态填充我读过的 ME 可能会导致 IE 出现问题,但我只是不确定是否有解决方法。我这样做的原因是因为这是一个投资组合站点,其中所有项目数据都通过 getJSON 调用加载,一旦加载,所有项目都会填充适当的数据并动态创建。有几个视频项目。我已经将代码简化为我项目之外的示例,该示例基本上经历了相同的行为。如果我只是写出 HTML 并在 JS 中控制它可以工作,但是当我通过 JS 创建 HTML 然后尝试播放时,我得到错误日志(在代码中创建 ME 播放器)。这是代码:

$(function() {
            var details = {
                    width: 640,
                    height: 480,
                    src: 'work/television/1'
                },
                $body = $('body'),
                $vid = $('<video width="' + details.width + '" height="' + details.height + '" preload="none" id="vidPlayer1"></video>'),
                $mp4 = $('<source src="' + details.src + '.mp4" type="video/mp4" title="mp4">'),
                $webm = $('<source src="' + details.src + '.webm" type="video/webm" title="webm">'),
                $ogg = $('<source src="' + details.src + '.ogv" type="video/ogg" title="ogg">'),
                $flash = $('<object width="' + details.width + '" height="' + details.height + '" type="application/x-shockwave-flash" data="swf/flashmediaelement.swf"><param name="movie" value="swf/flashmediaelement.swf"><param name="flashvars" value="controls=true&file=' + details.src + '.mp4"></object>'),
                $error = $('<p>The available video formats are not supported by your browser. :(</p>'),
                $controls = $('<div class="videoControls playBtn"></div>');

            $body.append($controls);

            $vid.append($mp4);
            $vid.append($webm);
            $vid.append($ogg);
            $vid.append($flash);
            $vid.insertAfter($controls);

            var vidPlayer = new MediaElementPlayer('#vidPlayer1', {
                features: [],
                // mode: 'shim',
                pluginPath: 'swf/',
                success: function(mediaElement) {
                    console.log('success', mediaElement);
                },
                error: function() {
                    console.log('Error loading player.  Please try again.');
                }
            });

            $body.on('click', function(evt) {
                vidPlayer.play();
            });
        });

任何帮助将不胜感激。

4

1 回答 1

0

问题解决了。对于任何有兴趣的人,必须将我的附加内容合并到一个调用中,因此 $vid 变为:

$vid = $('<video width="' + details.width + '" height="' + details.height + '" preload="none" id="vidPlayer-' + row + '-' + slide + '"><source src="' + details.src + '.mp4" type="video/mp4" title="mp4"><source src="' + details.src + '.webm" type="video/webm" title="webm"><source src="' + details.src + '.ogv" type="video/ogg" title="ogg"><p>The available video formats are not supported by your browser. :(</p></video>')

只需将其全部放在一个语句中,IE9 就可以正确识别它。问题是通过附加,因为我在做源变量从未被附加,因此 IE 不知道我的视频的来源是什么。

希望这对将来的某人有所帮助。

于 2012-07-24T16:10:55.163 回答