如何使用javascript防止chrome的flash音频模式

时间:2016-04-17 17:36:20

标签: javascript html5 flash sdk soundmanager2

版本49中存在Chrome错误

这会影响我的应用程序,该应用程序基于此api http://soundcloud.lrdiv.co/(github repo https://github.com/lrdiv/ember-soundcloud

基本上问题是Soundcloud Api使用soundmanager2作为基础处理音频流本身有2种模式flash和html5。问题是,如果Flash播放器可用,它将尝试使用它并失败,而如果它不可用,它将只使用html5并立即工作。

证明,如果您到这里 chrome:// plugins / 并停用Flash播放器,音频流将再次在Chrome中运行。

在这个讨论https://github.com/soundcloud/soundcloud-javascript/issues/39#issuecomment-206726301中,一个可能的临时黑客是检测chrome并在flash模式下返回false。

    function d() {
        var t, e, n, i;
        if ("undefined" != typeof window.ActiveXObject)
            try {
                i = new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash"),
                i && (t = i.GetVariable("$version"))
            } catch (r) {}
        else
            window.navigator && window.navigator.plugins && window.navigator.plugins.length > 0 && (n = "application/x-shockwave-flash",
            e = window.navigator.mimeTypes,
            e && e[n] && e[n].enabledPlugin && e[n].enabledPlugin.description && (t = e[n].enabledPlugin.description));
        // @todo, chrome flash player bug, if under chrome, dont return true here, more info:
        // https://github.com/soundcloud/soundcloud-javascript/issues/39
        **if (!!window.chrome) {
          return false
        }**
        return t

    }

我想在我的sdk.js中做同样的事情,但不是很清楚,我必须阻止闪存流的chrome

1 个答案:

答案 0 :(得分:1)

在我的sdk.js中我必须添加

soundManager.preferFlash = false;

不使用Flash插件作为音频播放器