example jquery adobe flash swfobject

jquery - example - Error no detectado: método de llamada de error en NPObject



swfobject example (2)

Tengo un video flash en mi página de la siguiente manera:

<script type="text/javascript"> var flashvars = { }; var params = { movie: "VideoMain.swf", quality: "high", bgcolor: "#000000", allowScriptAccess: "always", wmode: "transparent" }; var attributes = { id: "VideoMain", name: "VideoMain", classid: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", width: "100%", height: "100%" }; swfobject.embedSWF("./video/VideoMain.swf", "myVideoContent", "100%", "100%", "11.0.0","", flashvars, params, attributes); </script> <div id="myVideoContent"> <h1>Oooppsss....you need flash or a newer version of flash</h1> <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" /></a></p> </div>

Lo anterior se agrega a #VideoMain

Entonces tengo lo siguiente:

$(''#X.click'').click(function(e) { var flash = document.getElementById("VideoMain"); flash.sendToActionScriptPublishVideo(true); });

Esto falla con el error de la consola:

Uncaught Error: Error calling method on NPObject. (anonymous function) jQuery.event.dispatchjquery.js:3256 jQuery.event.add.elemData.handle.eventHandlejquery.js:2875

¿Alguna idea de lo que podría estar mal aquí? Gracias


Recibía el mismo mensaje de error. El problema solo se produjo cuando Flash realizó una llamada ExternalInterface que se devolvió después de que se bloqueó Flash (por cualquier motivo). La solución que implementé fue: compruebe si el objeto Flash todavía está funcionando y si la devolución de llamada sigue siendo una función de ese objeto.


NPObject es una "interfaz" a cualquier código "extranjero" expuesto a través del navegador (extranjero, como en el extranjero a JavaScript, de lo contrario pueden ser objetos propios del navegador, como el objeto de ventana global, por ejemplo). El complemento de Flash incrustado ciertamente implementaría esta "interfaz" (por lo que el navegador lo ve como simplemente otro NPObject).

Cuando llama a un método en ese objeto, hay varias funciones que envuelven esa llamada serializando los datos pasados ​​al objeto y de vuelta al tiempo de ejecución del navegador. Es difícil decir con certeza qué es exactamente lo que no funcionó, pero algunas razones comunes incluirían:

  1. El complemento no expone (o aún no se ha registrado) un método con el nombre que está intentando llamar.
  2. El complemento se incrustó de una manera que no permite las secuencias de comandos (las limitaciones pueden estar en ambos lados, Flash requiere que la llamada provenga de un dominio confiable y usted puede restringir el complemento para que no se comunique con el entorno a través de la configuración en la etiqueta del objeto.
  3. Se produjo un error en el código del complemento invocado a través de JavaScript. No estoy seguro de que sea el mismo error, pero es muy probable.