2012-01-20 38 views
34

Tôi có một đoạn video flash trên trang web của tôi như sau:Lỗi chưa gặp: phương pháp gọi Lỗi trên 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="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> 

Trên đây được nối vào #VideoMain

Sau đó, tôi đã điều sau đây:

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

Lỗi này không thành công:

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

Bất kỳ ý tưởng nào có thể sai ở đây? Cảm ơn

Trả lời

73

NPObject là "giao diện" cho bất kỳ mã "nước ngoài" nào được hiển thị thông qua trình duyệt (ngoại, như ở nước ngoài với JavaScript, nếu không nó có thể là đối tượng của trình duyệt, chẳng hạn như đối tượng cửa sổ chung). Plugin Flash được nhúng chắc chắn sẽ triển khai "giao diện" này (vì vậy trình duyệt nhìn thấy nó giống như một NPObject khác).

Khi bạn gọi một phương thức trên đối tượng đó, có một số chức năng quấn cuộc gọi đó tuần tự hóa dữ liệu được truyền cho đối tượng và quay lại thời gian chạy của trình duyệt. Rất khó để biết chắc chắn chính xác những gì không hiệu quả, nhưng một số lý do phổ biến sẽ bao gồm:

  1. Plugin không hiển thị (hoặc chưa đăng ký) một phương thức có tên bạn đang cố gắng gọi.
  2. Plugin được nhúng theo cách không cho phép ghi đè (các giới hạn có thể ở cả hai bên, Flash yêu cầu cuộc gọi đến từ miền đáng tin cậy và bạn có thể hạn chế plugin giao tiếp với môi trường thông qua cài đặt trong đối tượng tag
  3. lỗi ném trong mã của plugin gọi thông qua JavaScript -... tôi không chắc chắn đó sẽ là những lỗi tương tự, nhưng nó là rất nhiều khả năng
+2

Thứ ba là những gì đã xảy ra với tôi - nếu bạn đang sử dụng Flash, thì có lỗi xảy ra trong hàm gọi là JS - sử dụng khối 'try..catch' có thể chứa nó hoặc giúp bạn thu hẹp nơi mà vấn đề là do đó bạn có thể sửa chữa nó – divillysausages

+5

Tôi nhận được lỗi này khi JS đã cố gắng gọi phương thức Flash tiếp xúc nhưng System.security.allowDomain()/System.security.allowinsecureDomain() không được gọi. Nếu bạn gọi allowDomain() thì hãy đảm bảo rằng HTML của bạn được tải trên cùng một giao thức như SWF (HTTPS hoặc HTTP). –

+2

4) phương pháp bạn thêm dưới dạng gọi lại phải được chuyển thành: công khai 5) chuyển giá trị chưa xác định cho phương thức này có thể tạo thông báo này (nếu bạn mong đợi một Chuỗi trong flash) – YopSolo

1

tôi đã nhận được thông báo lỗi tương tự các vấn đề chỉ xảy ra khi Flash thực hiện cuộc gọi ExternalInterface trả về sau khi Flash bị lỗi (vì lý do gì). Việc sửa lỗi tôi đã thực hiện là: Kiểm tra xem đối tượng Flash vẫn đang hoạt động hay chưa nếu gọi lại vẫn là một chức năng của đối tượng đó.

Các vấn đề liên quan