3 votes

Les appels d'interface externe à Flash ne fonctionnent pas dans IE9

Nous avons un jeu flash intégré dans une page web (utilisant SWFObject v2.2) et il y a quelques liens sur la page qui appellent le flash de la manière suivante :

window.document["flashObjectId"].flashMethod();

Cela a très bien fonctionné sur tous les navigateurs que nous avons essayés, y compris IE7 et 8, mais IE9 génère l'erreur suivante : "SCRIPT438 : Object doesn't support this property or method".

Il fonctionne en mode de compatibilité, j'ai donc essayé d'ajouter une balise méta pour dire à IE9 d'utiliser le mode de compatibilité par défaut, mais cela n'a pas fonctionné parce que notre jeu tourne dans une IFrame dans Facebook.

J'ai essayé de référencer l'objet flash de toutes les manières possibles et imaginables dans le Javascript mais j'obtiens toujours le même message d'erreur dans IE9. Si quelqu'un a des informations qui pourraient m'aider à faire fonctionner cela dans IE9, j'apprécierais vraiment !

2voto

A_developer Points 46

C'est probablement la raison de votre problème et la solution est également fournie ici :

http://msdn.microsoft.com/en-us/library/gg622942%28v=VS.85%29.aspx

0voto

JercSi Points 649

J'ai eu le même problème, mais je n'ai pas utilisé SWFObject ou AC_RunActiveContent.js.

Ma solution était : swf publié avec HTML et AC_RunActiveContent.js. J'ai ensuite remplacé mon code actuel par un code exporté de flash et cela a commencé à fonctionner.

0voto

OctoRazor Points 26

Qu'en pensez-vous ?

function getFlashObject(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        //alert("IE");
        if (typeof (window[movieName].flashMethod) == 'function') {
            // < IE9
            movie = window[movieName];
        }
        else if (typeof (document[movieName].flashMethod) == 'function') {
            // >= IE9
            movie = document[movieName];
        }
    }
    else {
        // NON IE
        movie = document[movieName];
    }

    return ((movie) ? true : false);
}

$(document).ready(function () {
    if(getFlashObject("flashObjectId")) {
        movie.flashMethod();
    } else {
        alert("Failed to initialize");
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X