it-swarm.com.de

Nicht erfasster Fehler: Fehler beim Aufrufen der Methode in NPObject

Ich habe ein Flash-Video auf meiner Seite wie folgt:

<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>

Das Obige wird in #VideoMain angehängt

Dann habe ich folgendes:

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

Dies schlägt mit dem Konsolenfehler fehl:

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

Irgendwelche Ideen, was hier falsch sein könnte? Vielen Dank

34
AnApprentice

NPObject ist eine "Schnittstelle" zu jedem "fremden" Code, der über den Browser verfügbar gemacht wird (fremd, wie in fremd für JavaScript, ansonsten kann es sich um browsereigene Objekte handeln, wie zum Beispiel das globale Fensterobjekt). Das eingebettete Flash-Plugin würde diese "Schnittstelle" sicherlich implementieren (so dass der Browser sie nur als ein weiteres NPObject ansieht).

Wenn Sie eine Methode für dieses Objekt aufrufen, gibt es mehrere Funktionen, die den Aufruf der Serialisierung der an das Objekt und zurück zur Laufzeit des Browsers übergebenen Daten umbrechen. Es ist schwer zu sagen, was genau nicht funktioniert hat, aber einige häufige Gründe wären:

  1. Das Plugin macht eine Methode mit dem Namen, den Sie aufrufen möchten, nicht verfügbar (oder hat sie noch nicht registriert).
  2. Das Plugin wurde so eingebettet, dass keine Kreuzschrift zulässig ist (die Einschränkungen können auf beiden Seiten liegen. Flash erfordert, dass der Aufruf von einer vertrauenswürdigen Domäne stammt, und Sie können die Kommunikation des Plugins mit der Umgebung über die Einstellungen im Objekt-Tag einschränken.
  3. Ein Fehler im Code des Plugins, der über JavaScript aufgerufen wird. Ich bin mir nicht sicher, ob es sich um denselben Fehler handelt, aber es ist sehr wahrscheinlich.
73
user797257

Ich habe die gleiche Fehlermeldung erhalten. Das Problem trat nur auf, wenn Flash einen ExternalInterface-Aufruf ausführte, der nach dem Absturz von Flash zurückgegeben wurde (aus welchem ​​Grund auch immer). Das Update, das ich implementiert habe, war: Überprüfen Sie, ob das Flash-Objekt noch aktiv ist und ob der Rückruf noch eine Funktion dieses Objekts ist.

1
stephanlindauer