Подтвердить что ты не робот

Ошибка очистки: ошибка вызова метода в 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

Любые идеи, что здесь может быть неправильным? Благодаря

4b9b3361

Ответ 1

NPObject является "интерфейсом" к любому "чуждому" коду, открытому через браузер (чужой, как и в отличие от JavaScript, иначе это могут быть собственные объекты браузера, например, глобальный объект окна). Встроенный Flash-плагин, безусловно, будет реализовывать этот "интерфейс" (поэтому браузер видит его как еще один NPObject).

Когда вы вызываете метод на этом объекте, есть несколько функций, которые переносят, которые вызывают сериализацию данных, переданных объекту, и обратно во время выполнения браузера. Трудно точно сказать, что именно не сработало, но некоторые общие причины включают:

  • Плагин не раскрывает (или еще не регистрировал) метод с именем, которое вы пытаетесь вызвать.
  • Плагин был встроен таким образом, что кросс-скрипты не разрешены (ограничения могут быть с обеих сторон, Flash требует, чтобы вызов поступал из доверенного домена, и вы можете ограничить возможность подключения плагина от среды через настройки в объекте тег.
  • Ошибка, вызванная кодом плагина, вызванным с помощью JavaScript. Я не уверен, что это будет одна и та же ошибка, но это очень вероятно.

Ответ 2

Я получал такое же сообщение об ошибке. Проблема возникла только тогда, когда Flash сделал вызов ExternalInterface, который был возвращен после сбоя Flash (по какой причине вообще). Исправление, которое я выполнил, было: Проверьте, все еще запущен и запущен объект Flash, и если обратный вызов все еще является функцией этого объекта.