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