Arrêtez de recharger le fichier flash lors de l'utilisation des méthodes d'affichage et de masquage

J'ai une page Web où un fichier flash est intégré dans ce fichier. Le fichier flash comporte un quiz composé de 4 questions. Lorsque l'utilisateur répond à la première question, la deuxième question sera affichée. Ce flash est intégré dans un div appelé divFlashcontent.Now Je veux cacher et montrer le quiz inbetween.Ex: Lorsque l'utilisateur clique sur un bouton ("Pause"), je veux cacher le quiz. Et quand il clique sur le bouton "Continuer", je veux continuer (montrer) le quiz. J'utilise la méthode jquery show () et la méthode hide pour cela. Mais le problème est, quand j'appelle la méthode de l'émission, le contenu flash est à nouveau chargé (Affichage du quiz depuis le début). Il ne montre pas l'étape où nous avons cliqué sur la pause buttton. Comment puis-je resoudre ceci ? Je veux que le flash soit au même stade où il est devenu caché

La $.hide() interne fait un css: display:none; Sur votre élément. Cela provoquera le rechargement instantané de chaque fois. Je suggère de cacher votre flash d'une manière différente, car il réagit mal à cette propriété css.

Voici un plugin qui cache votre élément en le positionnant hors de l'écran. Cela ne fonctionne pas dans tous les cas, mais peut être très utile si cela s'applique à vous.

Le CSS à ajouter:

 .flashHide { position:absolute; left:-99999px; } 

Et le plugin à ajouter:

 (function($){ var hideClassName = 'flashHide'; $.fn.extend({ flashHide: function() { return this.each(function(){ $(this).addClass(hideClassName); }); }, flashShow: function() { return this.each(function(){ $(this).removeClass(hideClassName); }); } }); })(jQuery); 

Ensuite, vous l'utiliseriez comme suit:

 $('div#flashContainer').flashHide(); $('div#flashContainer').flashShow(); 

Je sais que c'est un fil ancien, mais je voulais publier une solution simple pour ceux qui recherchent un qui ne nécessitera pas de modifications au code JS existant. Dans mon cas, j'avais un composant Tabset existant qui créait de nouveaux onglets et chargé dynamiquement le html intégré au SWF.

L'OMI, la manière la plus simple de gérer ceci est de placer un wrapper iframe autour du SWF – alors il ne sera pas arrêté / rechargé lorsque vous afficherez / masquerez le conteneur Div.

Pour résoudre ce problème, il vous suffit d'insérer un simple fichier html wrapper.

Vieux chemin:

Application principale -> chargeur HTML -> fichier SWF

Nouvelle façon:

Main App -> iframe loader -> Chargeur HTML -> Fichier SWF

Exemple simple:

 <iframe src="/stuff/swfContainer.html" style="width:100%;height:100%;border:0px;"> </iframe> 

Puis à l'intérieur de swfContainer.html faites quelque chose comme ceci:

 <html> <head> <style> body { margin:0px; } </style> </head> <body> <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="MySwf" width="100%" height="100%" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> <param name="movie" value="/stuff/mySwf.swf" /> <param name="quality" value="high" /> <param name="allowScriptAccess" value="sameDomain" /> <embed src="/stuff/mySwf.swf" quality="high" width="100%" height="100%" name="MySwf" align="middle" play="true" loop="true" quality="high" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"> </embed> </object> </body> </html> 

Ce n'est qu'un simple exemple de code, car vous voudrez probablement utiliser swfobject pour charger le SWF, mais je vais laisser cela à vous.

Vous avez eu plusieurs options, mais la meilleure est d'ajouter le code flash dans l'emballage eq #hiddeflash, à l'intérieur du code émis. Aussi, vous devez jouer avec votre index z et un poste:

 /*1*/ visibility:hidden!important; /*1*/ position:absolute; left:-300%; /*3*/ width:0; height:0; /*4*/ visibility:hidden!important; /*5*/ display:none 

Les seules solutions qui fonctionnent pour moi sur Firefox et Chrome sont ces codes css sur le conteneur flash:

Si vous voulez "supprimer" le flash du document (sorte d' display:none ):

 width:0; height:0; 

Si vous voulez uniquement cacher l'élément sans "supprimer" du document:

 visibility: hidden 

Les conseils de position ne fonctionnent pas sur Chrome