次のようにページにフラッシュビデオがあります:
<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
ここで何が間違っている可能性がありますか?ありがとう
NPObject は、ブラウザを介して公開される「外部」コードへの「インターフェイス」です(JavaScriptの外部のように外部、そうでない場合は、たとえば、グローバルウィンドウオブジェクトなどのブラウザ固有のオブジェクト)。埋め込みFlashプラグインは、確かにこの「インターフェース」を実装します(したがって、ブラウザーはそれを単なる別のNPObjectとして認識します)。
そのオブジェクトのメソッドを呼び出すと、オブジェクトに渡されてブラウザーのランタイムに戻されるデータをシリアル化する呼び出しをラップするいくつかの関数があります。正確に機能しなかったものを特定することは困難ですが、一般的な理由には次のようなものがあります。
同じエラーメッセージが表示されました。問題が発生したのは、Flashがクラッシュした後に返されるExternalInterface呼び出しをFlashが行った場合のみです(何らかの理由で)。私が実装した修正は、Flashオブジェクトがまだ稼働中であるかどうか、コールバックがそのオブジェクトの関数であるかどうかを確認することでした。