jQuery Sounds IE7 / IE8 Проблема с Flash ExternalInterface

Я хотел бы добавить звуковые оповещения в веб-приложение. Я считаю, что Flash — лучший способ сделать это для поддержки всех основных браузеров, т.е. IE, Фаерфокс, Хром, Сафари. Chrome, похоже, не работает со звуковыми решениями без флэш-памяти.

Я использую jQuery и хотел бы использовать подключаемый модуль jQuery Sound. Пример показан в демонстрации подключаемого модуля jQuery Sound, однако я не могу получить его работает в IE7 и IE8 Beta.

Я получаю проблему с JavaScript в разделе кода ниже.

load: function(evt, url) {
    var self = $(this);
    var id = self.data("sound.settings").id;
    var movie = self.data("sound.get_movie")(id);
    movie.load(url);
    self.data("sound.isPlaying", true);
},

Плагин также использует следующую функцию для получения Flash-ролика, который отлично выглядит для браузеров IE.

var get_movie = function(id) {
    var movie = null;
    if ($.browser.msie) {
        movie = window[id];
    } else {
        movie = document[id];
    }
    return movie;
};

Есть ли что-то, что мне здесь не хватает, чтобы это могло работать в IE7 и IE8 Beta? Любая помощь будет принята с благодарностью.


person Luke    schedule 21.01.2009    source источник
comment
Дайте мне знать, если я не включил достаточно деталей.   -  person Luke    schedule 22.01.2009


Ответы (1)


Проблема устранена при изменении следующего кода:

    if ($.browser.msie) {
        var html = '<object id="' + settings.id + '" data="' + settings.swf + '" type="application/x-shockwave-flash" width="0" height="0">';
        html += ' <param name="movie" value="' + settings.swf + '"/>';
        html += ' <param name="AllowScriptAccess" value="always"/>';
        html += ' <param name="quality" value="high"/>';
        html += ' <param name="wmode" value="transparent"/>';
        html += ' <!-- -->';
        html += ' </object>';
    } else {
        var html = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';
        html += ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="0" height="0"';
        html += ' id="' + settings.id + '"';
        html += ' align="middle">';
        html += '<param name="movie" value="' + settings.swf + '" />';
        html += '<param name="quality" value="' + settings.quality + '" />';
        html += '<param name="FlashVars" value="id=' + settings.id + '"/>';
        html += '<param name="allowScriptAccess" value="always"/>';
        html += '<embed src="' + settings.swf + '" FlashVars="id='+ settings.id +'"';
        html += ' allowScriptAccess="always" quality="' + settings.quality + '" bgcolor="#ffffff" width="0" height="0"';
        html += ' name="' + settings.id + '" align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
        html += '</object>';
    }

...


var get_movie = function(id) {
    var movie = null;
    if ($.browser.msie) {
        //movie = window[id];
        movie = document.getElementById(id);
    } else {
        movie = document[id];
    }
    return movie;
};

Ссылка на источник: SoundManager 2

person Luke    schedule 22.01.2009
comment
Я хочу добавить, что IE требует для элемента «object» как атрибут «id», так и атрибут «data». - person Ed Gomoliako; 07.10.2009