我的页面上有一个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%", "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
任何想法在这里可能是错的?感谢
答案 0 :(得分:73)
NPObject是一个&#34;界面&#34;任何&#34;外国&#34;通过浏览器公开的代码(外来的,如在外国的JavaScript,否则它可能是浏览器自己的对象,例如全局窗口对象)。嵌入式Flash插件肯定会实现这个&#34;接口&#34; (因此浏览器将其视为另一个NPObject)。
当你在该对象上调用一个方法时,有几个函数包含该序列化传递给对象并返回到浏览器运行时的数据的调用。很难确定究竟什么不起作用,但一些常见的原因包括:
答案 1 :(得分:1)
我收到了同样的错误消息。只有Flash在Flash崩溃后返回的ExternalInterface调用(出于什么原因)时才会出现此问题。我实现的修复是:检查Flash对象是否仍在运行,以及回调是否仍然是该对象的函数。