我在我的页面上有一个Flash视频如下:
<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%","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>
将上述内容附加到#VideoMain中
然后我有以下:
$('#X.click').click(function(e) { var flash = document.getElementById("VideoMain"); flash.sendToActionScriptPublishVideo(true); });
Uncaught Error: Error calling method on NPObject. (anonymous function) jQuery.event.dispatchjquery.js:3256 jQuery.event.add.elemData.handle.eventHandlejquery.js:2875
任何想法在这里可能是错误的?谢谢
解决方法
NPObject是通过浏览器暴露的任何“外部”代码的“接口”(外部的,如在JavaScript的外部,否则它可以是浏览器自己的对象,例如全局窗口对象)。嵌入式Flash插件肯定会实现这个“接口”(所以浏览器将其视为另一个NPObject)。
当你调用该对象的一个方法时,有几个函数将调用的序列化传递给对象的数据返回浏览器的运行时。很难说明确是什么没有工作,但一些常见的原因包括:
>插件没有公开(或没有注册)一个方法与您尝试调用的名称。>插件是以不允许交叉脚本的方式嵌入的(限制可能在两边,Flash要求调用来自受信任的域,并且您可以通过对象标记中的设置限制插件与环境通信。>在通过JavaScript调用的插件代码中抛出的错误 – 我不确定是否会有同样的错误,但很可能。