web-dev-qa-db-ja.com

キャッチされていないエラー:NPObjectのメソッド呼び出しエラー

次のようにページにフラッシュビデオがあります:

<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

ここで何が間違っている可能性がありますか?ありがとう

34
AnApprentice

NPObject は、ブラウザを介して公開される「外部」コードへの「インターフェイス」です(JavaScriptの外部のように外部、そうでない場合は、たとえば、グローバルウィンドウオブジェクトなどのブラウザ固有のオブジェクト)。埋め込みFlashプラグインは、確かにこの「インターフェース」を実装します(したがって、ブラウザーはそれを単なる別のNPObjectとして認識します)。

そのオブジェクトのメソッドを呼び出すと、オブジェクトに渡されてブラウザーのランタイムに戻されるデータをシリアル化する呼び出しをラップするいくつかの関数があります。正確に機能しなかったものを特定することは困難ですが、一般的な理由には次のようなものがあります。

  1. プラグインは、呼び出そうとしている名前のメソッドを公開しません(またはまだ登録していません)。
  2. プラグインは、クロススクリプトが許可されない方法で埋め込まれました(制限は両側にある可能性があり、Flashでは呼び出しが信頼できるドメインからのものである必要があり、オブジェクトタグの設定を通じてプラグインが環境と通信することを制限できます)。
  3. JavaScriptを介して呼び出されたプラグインのコードでエラーがスローされます-それが同じエラーになるかどうかはわかりませんが、可能性は非常に高いです。
73
user797257

同じエラーメッセージが表示されました。問題が発生したのは、Flashがクラッシュした後に返されるExternalInterface呼び出しをFlashが行った場合のみです(何らかの理由で)。私が実装した修正は、Flashオブジェクトがまだ稼働中であるかどうか、コールバックがそのオブジェクトの関数であるかどうかを確認することでした。

1
stephanlindauer