2010-10-01 5 views
0

J'ai le code js:ExternalInterface.addCallback ne fonctionne pas bien

function onFlashReady() {   
    sendToAS("sit"); 
} 

function callJS(value) {   
    onFlashReady(); 
    return "Hi Flash."; 
} 

function thisMovie(movieName) { 
    if (navigator.appName.indexOf("Microsoft") != -1) { 
     return window[movieName]; 
    } else { 
     return document[movieName]; 
    } 
} 
function sendToAS(value) {   
    thisMovie("FlashID").callAS(value); 
} 

html:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="850" Height="588" id="FlashID" tabindex="0"> 
     <param name="movie" value="BusFlex/BusProducts.swf" /> 
     <param name="quality" value="high" /> 
     <param name="wmode" value="opaque" /> 
     <param name="allowScriptAccess" value="always" /> 
     <param name="swfversion" value="6.0.65.0" /> 
     <param name="expressinstall" value="Scripts/expressInstall.swf" /> 
     <!--[if !IE]>--> 
     <object type="application/x-shockwave-flash" data="BusFlex/BusProducts.swf" width="850" height="588"> 
     <!--<![endif]--> 
     <param name="quality" value="high" /> 
     <param name="wmode" value="opaque" /> 
     <param name="allowScriptAccess" value="always" /> 
     <param name="swfversion" value="6.0.65.0" /> 
     <param name="expressinstall" value="Scripts/expressInstall.swf" /> 
     <div> 
     <h4>Установите или включите Adobe Flash Player.</h4> 
     <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p> 
     </div> 
     <!--[if !IE]>--> 
     </object> 
     <!--<![endif]--> 
     </object> 
     <script src="Scripts/swfobject_modified.js" type="text/javascript"></script> 
     <script type="text/javascript"> 
     <!-- swfobject.registerObject("FlashID"); //--> 
     </script> 
     </div> 

et le code actionscript:

protected function application1_creationCompleteHandler(event:FlexEvent):void 
{ 
    flash.system.Security.allowDomain("http://mysite.ru"); 
    flash.system.Security.allowDomain("http://localhost"); 
    if(ExternalInterface.available) 
    { 
      ExternalInterface.addCallback("callAS", fromJS); 
    } 
    ExternalInterface.call("callJS", "Hello JS!"); 
} 
public function fromJS(str:String):void 
{ 
    ... 
} 

Mais cela fonctionne dans IE uniquement. En FF cela ne fonctionne pas. Aidez-moi s'il vous plaît.

Répondre

1

Il semble que le problème soit dans votre fichier html intégré, les navigateurs Mozilla s'appuient sur la balise embed mais vous avez de nouveau object. Essayez d'utiliser quelque chose comme ça dans votre noeud d'objet:

<embed type="application/x-shockwave-flash" data="BusFlex/BusProducts.swf" width="850" height="588" allowscriptaccess="always"> 
</embed> 
+0

Comment fonctionne l'intégration, c'est à dire devez-vous conserver à la fois l'objet et l'étiquette d'intégration? [Swfobject] [http://code.google.com/p/swfobject/] m'a gardé heureusement inconscient de cela. – Tjelle

+1

Oui, vous conserverez les deux où l'intégration est simplement imbriquée dans l'objet. Je préfère aussi swfobject et j'ai oublié que vous utilisez sa fonction registerObject. Maintenant, je ne suis pas sûr du problème, êtes-vous certain que le document ["FlashID"] n'est pas nul en FF? – Dave

1

Merci !!! Je cherchais une réponse pour deux jours! Ce nouveau mon code:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="850" height="588" id="FlashID" tabindex="0"> 
    <param name="movie" value="BusFlex/BusProducts.swf" /> 
    <param name="quality" value="high" /> 
    <param name="wmode" value="opaque" /> 
    <param name="allowScriptAccess" value="always" /> 
    <param name="swfversion" value="6.0.65.0" /> 
    <param name="expressinstall" value="Scripts/expressInstall.swf" /> 

    <!--[if !IE]>--> 
    <embed src="BusFlex/BusProducts.swf" type="application/x-shockwave-flash" data="BusFlex/BusProducts.swf" width="850" height="588" allowscriptaccess="always" name="FlashID"> 

     <param name="quality" value="high" /> 
     <param name="wmode" value="opaque" /> 
     <param name="allowScriptAccess" value="always" /> 
     <param name="swfversion" value="6.0.65.0" /> 
     <param name="expressinstall" value="Scripts/expressInstall.swf" /> 
     <!--<![endif]--> 

     <!--[if IE]> 
     <div> 
     <h4>YCTAHOBUTE Adobe Flash Player.</h4> 
     <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" width="112" height="33" /></a></p> 
     </div> 
     <![endif]--> 
    <!--[if !IE]>--> 
    </embed> 
    <!--<![endif]--> 
    </object> 
Questions connexes