2012-01-20 27 views
34

şöyle: Yukarıdaki #VideoMain SonraYakalanmayan Hata: NPObject Hata çağıran yöntemi Sayfamda flash video var

ben şu var içine eklenen alır

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

:

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

Bu konsol hata ile başarısız:

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

Burada herhangi bir fikir yanlış olabilir mi? Teşekkürler

cevap

73

NPObject, tarayıcıdan etkilenen herhangi bir "yabancı" kodun "arabirimi" dir (yabancı, JavaScript'in dışarısında olduğu gibi, aksi takdirde örneğin, genel pencere nesnesi gibi tarayıcının kendi nesneleri olabilir). Gömülü Flash eklentisi kesinlikle bu "arabirimi" uygulayacaktır (böylece tarayıcı bunu başka bir NPObject olarak görecektir).

Bu nesnede bir yöntem çağırdığınızda, bu aramayı nesneye iletilen verileri serileştiren ve tarayıcı çalışma zamanına geri döndüren çeşitli işlevler vardır. Tam olarak işe yaramadı neyi kesin olarak söylemek zordur, ancak bazı genel nedenleri içerir:

  1. eklentisi göstermiyor (veya henüz kayıt yoktu) Aramak çalıştığınız adla bir yöntem.
  2. Eklenti, crosscripting'e izin verilmeyen bir şekilde gömüldü (sınırlamalar her iki tarafta olabilir, Flash, aramanın güvenilir bir etki alanından gelmesini gerektirir ve eklentinin, nesnedeki ayarlarla çevre ile iletişim kurmasını kısıtlayabilir etiket
  3. JavaScript aracılığıyla çağrılan eklentinin kodunda atılan bir hata -... Ben de aynı hata olurdu emin değilim, ama çok fazla muhtemeldir
+2

Üçüncüsü benim için yanlış giden şeydi - Flash kullanıyorsanız, JS tarafından çağrılan işlevde atılan bir hata var: 'try..catch' komutunu kullanmak onu kullanabilir veya size yardımcı olabilir Sorunu nerede olduğunu daraltmak için burayı daraltın – divillysausages

+5

JS hataya alınmış Flash yöntemini çağırmaya çalışırken bu hatayı aldım, ancak doğru System.security.allowDomain()/System.security.allowinsecureDomain() çağrılmıyordu. AllowDomain() işlevini çağırırsanız, HTML'inizin SWF (HTTPS veya HTTP) ile aynı protokol üzerinden yüklendiğinden emin olun. –

+2

4) Geri arama olarak eklediğiniz yöntem şu şekilde belirtilmelidir: public 5) undefined bir değerin bu yönteme geçirilmesi, bu iletiyi (flash'da bir String beklerseniz) – YopSolo

1

aynı hata mesajı başlamıştı yalnızca Flash, Flash'ın çökmesinden sonra dönen bir ExternalInterface araması yaptığında (her ne sebeple olursa olsun) sorun oluştu. Uyguladığım düzeltme: Flash nesnesinin hala çalışır durumda olup olmadığını kontrol et Geri arama hala bu nesnenin bir işlevi ise.

İlgili konular