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.
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
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