Ошибка очистки: ошибка вызова метода в 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="#" onclick="location.href='http://www.adobe.com/go/getflashplayer'; return false;"><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
Любые идеи, что здесь может быть неправильным? Благодаря
Ответы
Ответ 1
NPObject является "интерфейсом" к любому "чуждому" коду, открытому через браузер (чужой, как и в отличие от JavaScript, иначе это могут быть собственные объекты браузера, например, глобальный объект окна). Встроенный Flash-плагин, безусловно, будет реализовывать этот "интерфейс" (поэтому браузер видит его как еще один NPObject).
Когда вы вызываете метод на этом объекте, есть несколько функций, которые переносят, которые вызывают сериализацию данных, переданных объекту, и обратно во время выполнения браузера. Трудно точно сказать, что именно не сработало, но некоторые общие причины включают:
- Плагин не раскрывает (или еще не регистрировал) метод с именем, которое вы пытаетесь вызвать.
- Плагин был встроен таким образом, что кросс-скрипты не разрешены (ограничения могут быть с обеих сторон, Flash требует, чтобы вызов поступал из доверенного домена, и вы можете ограничить возможность подключения плагина от среды через настройки в объекте тег.
- Ошибка, вызванная кодом плагина, вызванным с помощью JavaScript. Я не уверен, что это будет одна и та же ошибка, но это очень вероятно.
Ответ 2
Я получал такое же сообщение об ошибке. Проблема возникла только тогда, когда Flash сделал вызов ExternalInterface, который был возвращен после сбоя Flash (по какой причине вообще). Исправление, которое я выполнил, было: Проверьте, все еще запущен и запущен объект Flash, и если обратный вызов все еще является функцией этого объекта.