2009-01-21 11 views
1

Je souhaite ajouter des alertes sonores à une application Web. Je crois que Flash est le meilleur moyen de le faire pour soutenir tous les principaux navigateurs, à savoir. IE, Firefox, Chrome, Safari. Chrome ne semble pas fonctionner avec les solutions sonores non-flash.Sons jQuery IE7/IE8 Problème avec Flash ExternalInterface

J'ai utilisé jQuery et j'aimerais utiliser le plug-in jQuery Sound. Un exemple est montré à jQuery Sound Plug-in Demo, mais je ne peux pas obtenir ce travail dans IE7 et IE8 Beta.

Je reçois un problème JavaScript dans la section de code ci-dessous.

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); 
}, 

Le plug-in utilise également la fonction suivante pour obtenir l'animation Flash qui convient aux navigateurs IE.

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

Y a-t-il quelque chose qui me manque ici donc cela peut fonctionner dans IE7 et IE8 Beta? Toute aide serait grandement appréciée.

+0

Laissez-moi savoir si je ne l'ai pas inclus suffisamment de détails. – Luke

Répondre

1

Le problème est résolu lorsque le code suivant est modifié:

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; 
}; 

Source Referenced: SoundManager 2

+1

Je tiens à ajouter que IE requiert pour l'élément à la fois: l'attribut 'id' et l'attribut 'data'. –