Dialogue javascript sur un film flash

J'ai un tel système: lorsque le site principal s'ouvre, une galerie d'images flash apparaît, lorsque l'utilisateur clique sur une image, en utilisant la fonction "ExternalInterface.call" du Flash, j'appelle une fonction javascript qui ouvre un mode de dialogue java nommé nyromodal (qui Récupère des données HTML brutes via ajax à partir d'une autre page à l'intérieur de la boîte de dialogue) sur le film flash. Et c'est quand le problème se produit:

Dans Google Chrome, il fonctionne bien comme prévu, mais des problèmes se produisent avec d'autres navigateurs:

Qu'est-ce qui peut causer ce problème? Comment puis-je le réparer?

Voici le code source, le site n'est pas sur anywebsite, je ne peux donc pas le montrer directement:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link type="text/css" href="/media/style.css" rel="stylesheet" /> <link rel="stylesheet" href="/media/nyroModal.full.css" type="text/css" media="screen" /> <script type="text/javascript" src="/media/jquery.js"></script> <script language="javascript">AC_FL_RunContent = 0;</script> <script type="text/javascript" src="/media/AC_RunActiveContent.js"></script> <script type="text/javascript" src="/media/jquery.nyroModal-1.5.2.pack.js"></script> <script type="text/javascript"> function showItem(i,x){ var myurl = "/item/?i="+i; $.nyroModalManual({url:myurl,title:x}); } </script> </head> <body bgcolor="#000000"> <!--url's used in the movie--> <!--text used in the movie--> <!-- saved from url=(0013)about:internet --> <div STYLE="z-index: 1;"><center> <script language="javascript"> if (AC_FL_RunContent == 0) { alert("This page requires AC_RunActiveContent.js."); } else { AC_FL_RunContent( 'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0', 'width', '100%', 'height', '600', 'src', '/media/preview', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'align', 'middle', 'play', 'true', 'loop', 'true', 'scale', 'noScale', 'wmode', 'transparent', 'devicefont', 'false', 'id', 'preview', 'bgcolor', '#2e2e2e', 'name', 'preview', 'menu', 'true', 'allowFullScreen', 'false', 'allowScriptAccess','sameDomain', 'movie', '/media/preview', 'salign', '' ); //end AC code } </script> <noscript> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="1024" height="850" id="preview" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="false" /> <param name="movie" value="/media/preview.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /> <embed src="/media//media/preview.swf" quality="high" bgcolor="#000000" width="100%" height="850" name="preview" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /> </object> </noscript> </center> </div> </body> </html> 

Transparent ne fonctionnera pas pour cela. Pour afficher HTML sur Flash, vous devez afficher votre film avec wmode="opaque" .

En outre, le réglage de la propriété CSS zIndex sur 0 pour le film et 1000 (ou tout au-dessus de 0) vers le pop-up aidera dans certains navigateurs.

Vous pouvez probablement résoudre cela en utilisant une calque iframe, voir aussi cette réponse .

 var flashFlag = false; var flashObjs; // on javascript Dialog open event flashFlag = checkflashContent(); function checkflashContent() { //alert('checking for flash'); var flashObjects = new Array(); var flag = false; for (i = 0; i < document.getElementsByTagName("object").length; i++) { flashObjects[i] = document.getElementsByTagName("object")[i]; // alert('found flash'); jQuery(flashObjects[i]).hide(); flag = true; } flashObjs = flashObjects; return flag; } // on Javascript dialog close event function closeDialog(){ ... ... if (flashFlag) { //alert('dialog closed, showing flash'); for (i = 0; i < flashObjs.length; i++) { jQuery(flashObjs[i]).show(); } } // On Open Event get the elements by tag Name (OBJECT) // and use jQuery .hide to hide the content and on // dialog close event use jQuery .show to show the flag back. 

Vous devez intégrer le flash à l'aide du wmode transparent ou opaque.

Mais soyez prêt à vous amuser. Il y a des bogues étranges qui l'entourent.

Il semble que vous ayez quelque chose de corrompu avec les installations de votre navigateur, cela ne devrait pas être à distance, même si ce n'est pas à distance, indépendamment de la configuration intégrée. Les fenêtres d'alertes sont générées plus ou moins au niveau Win32 / OS, si elles s'affichent de manière incorrecte ou avec une corruption, votre ordinateur est configuré.

Vous avez un étrange mélange d'ancien code HTML et XHTML là-bas. Je retirerais la balise centrale, l'attribut bgcolor sur le corps et mettrai le style de la divise wrapper dans un style, même s'il est simplement intégré dans la page.

Cela dit, la seule chose que je peux penser que cela pourrait lui donner quelques problèmes, c'est que vous avez l'index z défini sur le div, mais pas de position. Essayez d'ajouter la position: par rapport à la div et voyez si cela vous guérit.