2009-01-19 5 views
4

Je suis en train d'écrire un portail de conférence en utilisant OpenMeetings, une application Flash qui est compilée avec OpenLaszlo. J'ai donc accès au code source SWF qui est un mélange de balises Laszlo et de JavaScript, mais pas d'ActionScript. Le problème que j'ai est que lorsque les utilisateurs s'éloignent de l'application dans Internet Explorer, leur microphone reste connecté et ils peuvent entendre l'autre partie/l'autre partie peut les entendre. Cela signifie que IE ne détruit pas correctement l'objet Flash.Internet Explorer ne décharge pas le fichier SWF lorsque je navigue loin de la page

J'ai eu de la difficulté à reproduire ce bogue sur mon propre système, mais cela se produit sur l'ordinateur de mes collègues.

J'ai essayé d'utiliser JavaScript pour capturer l'événement de déchargement et définir innerHTML sur "", ce qui supprime l'objet Flash de la page, mais encore une fois, le microphone etc. reste connecté.

Cela se produit uniquement avec Internet Explorer. C'est un bug majeur pour notre logiciel, car nous traitons avec l'éducation et donc un étudiant restant "en ligne" sans le savoir pourrait nous ouvrir à un procès!

+0

Nous avons un problème similaire aussi. Cela fonctionne correctement sur certaines machines, mais pas sur d'autres. Nous n'avons pas accès au code flash, nous avons donc vraiment besoin d'une solution en javascript. Des idées? – Karl

Répondre

0

Y a-t-il des références JavaScript à l'objet qui restent?

//e.g. 
var conf = document.getElementById('mySWFObject'); 

si oui, la suppression explicite fonctionne-t-elle?

delete window.conf; 

(Sinon, vous pouvez poster un lien vers le code/site et nous pouvons le vérifier?)

1

Malheureusement, je ne peux pas fournir un lien car il est un site interne.

C'est juste un simple embed src = "..." dans un div, et sur unload je mets le innerHTML de div à "". Cela ne marche pas mieux que de fermer la fenêtre du navigateur, et je n'ai jamais de référence directe à l'objet embed, juste à son div contenant. J'ai l'impression que cela peut avoir quelque chose à voir avec le fait que le film est toujours en train de "jouer". Certains résultats de recherche sur Google ont des gens qui se plaignent de problèmes similaires (l'audio FLV peut toujours être entendu après la fermeture de la fenêtre du navigateur) et le correctif semble arrêter explicitement le film depuis ActionScript. (et bien sûr je n'ai pas un tel contrôle sur le film compilé, il est généré à partir de OpenLaszlo)

+0

pouvez-vous l'arrêter à partir de JavaScript à la place? – scunliffe

+0

par exemple. utilisez le SWFObject.StopPlay(); méthode. – scunliffe

0

Peut-être que vous pouvez demander à la personne qui fait le développement OpenLaszlo s'ils construisent dans une méthode de destory en écoutant l'événement Retiré de la scène . Là, vous explicite arrêter tout jeu.

2

L'option couverte ici semble fonctionner le mieux pour nous:
http://blog.vokle.com/index.php/2009/03/10/why-ie-doesnt-drop-flash-netconnections-netstreams-and-how-to-fix-it/
Nous utilisons également la fonction "removeSWF" de SWFObject comme ceci:

<!--[if IE]> 
    <script type="text/javascript"> 
     function cleanupForIE() { 
      try { 
       //get using the id of your swf instance 
       var swf = document.getElementById('myswf'); 
       swf.disconnect(); 
      } catch(e) { 
       alert("Error on unload: " + e); 
      } 
      swfobject.removeSWF("flashContent"); 
     } 
     window.attachEvent("onbeforeunload", cleanupForIE); 
    </script> 
    <![endif]--> 
1

Techniquement, il est possible d'ajouter que fonctionnalité - si elle n'a pas encore été ajoutée. OpenMeetings est maintenant un Apache Incubator project, il suffit de contacter le développeur à travers la liste de diffusion, et ils devraient être en mesure de vous aider.

Questions connexes