tag - Javascript para actualizar la comunicación
title of page html (6)
Ah, aquí está la respuesta a tu problema.
<form>
<input type="button" onclick="callExternalInterface(id)" value="Call ExternalInterface" />
</form>
<script>
function callExternalInterface(id) {
thisMovie("externalInterfaceExample").callAS(id);
}
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName]
}
else {
return document[movieName]
}
}
</script>
ASÍ QUE si el cliente es Internet Explorer, debe buscar la película desde el objeto del documento. :-)
Intento llamar a una función Actionscript desde javascript pero estoy teniendo problemas en Internet Explorer. Estoy usando Swiff.remote en mootools 1.2.1 para llamar a la función actionscript, es decir:
Swiff.remote(playSwf.toElement(), ''sendResult'', result, plays, name);
Todo esto funciona bien en Firefox, Safari y Opera, pero recibo un error "no especificado" en Internet Explorer 6 y 7. He intentado utilizar el estándar de pantano:
window[''flash''].sendResult(result, plays, name);
En vano.
Gracias por cualquier ayuda. marca
No estoy familiarizado con el complemento Swiff, pero no necesita un complemento para llamar a las funciones flash de Javascript. Es incluso más fácil hacerlo de forma nativa.
De AS:
//1. calling javascript function from Flash.
ExternalInterface.call("sendData",tempStr);
// argument 1: javascript function, argument 2: data/variables to pass out.
//2. calling javascript function from Flash with recursion.
var returnValue:String = ExternalInterface.call("sendReturn",tempStr).toString();
//3. setting up a callback function for javascript
ExternalInterface.addCallback("callFlash",flashResponse);
// argument 1: function name called by javascript, argument 2: function on the Flash side.
// AS2 version looks like this : ExternalInterface.addCallback("callFlash",null,flashResponse);
De JS:
//1. javascript function as called from Flash.
function sendData(val){
alert(val);
document.flashForm.flashOutput.value = val;
}
//2. javascript function with recursion.
function sendReturn(val){
var tempData = "Hello from JS";
return tempData + '' :return'';
}
//3. calling Flash function with javascript.
function sendToFlash(val){
window[''flash''].callFlash(val);
}
Quería publicar esta respuesta, ya que esto puede ser lo que está causando problemas a los demás, obviamente esto no está causando su problema. Todavía estoy buscando una solución para su problema.
De los documentos de MooTools: http://mootools.net/docs/Utilities/Swiff Nota:
El archivo SWF debe compilarse con el componente ExternalInterface. Consulte la documentación de Adobe en la Interfaz externa para obtener más información.
Action Script 2.0
import flash.external.*;
Action Script 3.0
package com
{
import flash.external.ExternalInterface;
public class Main
{
}
}
Quizás esto pueda ayudarte, parece un problema similar pero usando el objeto swfobject.
Buena suerte.
Puedes llamarlo directamente:
playSwf.remote(''sendResult'', result, plays, name)
Por supuesto, sendResult
tiene que estar registrado con ExternalInterface.addCallback()
en el código AS y el archivo flash debe estar completamente cargado (de lo contrario, todas las llamadas fallarán).
Se puede encontrar un ejemplo en este repositorio github (fancyupload) : el as3proj contiene el origen AS, las llamadas remotas JS están en Swiff.Uploader.js .
Si su código funciona en todos los navegadores excepto Internet Explorer, es una buena apuesta que sea porque Flash Player para IE es un complemento de ActiveX. Leí en alguna parte que ActiveX se comunica en formato .NET y que la API externa de Flash se comunica en XML.
También estoy tratando de aprender la comunicación Javascript-Flash en Internet Explorer, por lo que les mantendré informados sobre lo que aprendo.