5

Gần đây tôi đã phát triển một tiện ích mở rộng google chrome sử dụng plugin NPAPI được tạo bằng khung FireBreath. Tôi vừa phát hiện ra rằng Google sẽ sớm ngừng các loại plugin này và cuối cùng cấm tất cả các tiện ích mở rộng hiện có sử dụng chúng. Vì vậy, tôi muốn cuối cùng chuyển sang kiến ​​trúc NaCl/PPAPI, nhưng tôi không chắc chắn nếu kiến ​​trúc này thậm chí có thể hỗ trợ những gì tôi hiện đang làm trong plugin NPAPI.Tiện ích mở rộng của Google chrome với NPAPI chuyển sang NaCl

Trong plugin NPAPI hiện tại của tôi, tôi đang hỗ trợ OSX và Windows. Trên phiên bản OSX, plugin thực thi hàm system() thực thi một dòng lệnh nhỏ 1 dòng. Có vẻ như sau:

osascript -e 'tell app ... 

Trên phiên bản cửa sổ, nó thực thi các chức năng trong thư viện COM. Cả hai phiên bản đều làm cùng một điều chính xác. Một lựa chọn khác mà tôi có là thực hiện một kịch bản python, nếu tôi đã đi tuyến đường này, tôi rất có thể muốn nhúng python trong thành phần gốc.

Có thể thực hiện điều này với NaCl/PPAPI không?

Trả lời

3

Vì bạn đã sử dụng tiện ích mở rộng, bạn có thể muốn xem Native Messaging để thay thế cho việc sử dụng NPAPI của mình.

+0

Nhắn tin gốc sẽ không hoạt động vì quá trình tôi tương tác không hỗ trợ. –

+0

Bạn đã nói bạn đã phát triển một plugin NPAPI; trong mô hình nhắn tin gốc, quy trình mà tiện ích mở rộng của bạn nói đến sẽ là nhị phân mà bạn đã tạo, sẽ có cùng mã với plugin NPAPI của bạn, trừ tất cả keo NPAPI và thay vào đó là xử lý thông báo gốc.Quá trình bạn cuối cùng đang nói chuyện với có lẽ không hỗ trợ được tải như một plugin NPAPI, nhưng điều đó không có nghĩa là NPAPI đã không làm việc như trung gian. – smorgan

+1

Vâng tôi nhận ra mình có thể làm cầu nối, nhưng đây sẽ là phương sách cuối cùng của tôi. Tôi thích rằng thành phần NPAPI được đóng gói trong một gói dễ cài đặt từ cửa hàng mở rộng. Việc phải cài đặt phần mở rộng của trình duyệt, sau đó cài đặt một thành phần riêng biệt riêng là một cái gì đó tôi sẽ không muốn làm nếu tôi có thể giúp nó. –

5

Khả năng chạy chức năng hệ thống tùy ý() hoặc thực hiện các hàm tùy ý từ thư viện COM là lý do số 1 cho việc không dùng NPAPI. Ditto để thực hiện một kịch bản python (bạn có thể thực thi kịch bản python trong NaCl, tất nhiên - nhưng nó sẽ không thể gọi hàm system() hoặc thư viện COM).

Đó không phải là tin tức: như đã được ghi nhận trong cuốn sách Comic Chrome vào ngày Chromium plugins phát hành NPAPI là không hạn chế và rằng đó là một vấn đề lớn: http://www.google.com/googlebooks/chrome/small_30.html

Rõ ràng HLV thậm chí trở lại sau đó rằng tình trạng này chỉ có thể là dung nạp quá lâu. Plugins đã được dung thứ trong 5 năm bởi vì một số điều quan trọng là không thể thực hiện được nếu không có chúng, nhưng bây giờ là lúc giết các plugin và đảm bảo không có gì trong trình duyệt có thể truy cập trực tiếp vào hệ điều hành.

Nếu bạn muốn triển khai một số chức năng không thể triển khai trong trình duyệt hiện tại vì không có API phù hợp, hãy hỏi về Chromium-dev và thêm API này vào Chromium (và có thể cả các trình duyệt khác)). Ví dụ truy cập vào cổng COM (không phải thư viện) đã được thêm gần đây (xem http://developer.chrome.com/apps/app_hardware.html).

+0

Plugin hiện tại thực sự tương tác với skype. Nó đặt trạng thái skype. Điều đáng thất vọng của tôi, tôi sẽ sớm không còn có thể thực hiện điều này trong trình duyệt chrome. Cảm ơn phản hồi, tôi sẽ hỏi xung quanh về chromium-dev. –

+1

Chúng tôi là những năm xa kể từ ngày trình duyệt có thể xử lý mọi thứ. Truy cập hệ thống tập tin, ví dụ, các API JS sandbox hiện tại không hoạt động nếu bạn cần chỉnh sửa tệp trong ứng dụng thực, như Autocad. Tất cả quyết định của Google sẽ làm là cố định IE trong doanh nghiệp. –

0

Nếu bạn không cần tương tác giữa trình duyệt và ứng dụng, bạn có thể sử dụng hỗ trợ giao thức bên ngoài. Bạn cần phải đăng ký giao thức trong sổ đăng ký trên Windows. Tôi không biết giao thức bên ngoài hoạt động như thế nào trên OSX. Khi người dùng nhấp vào liên kết giao thức bên ngoài, Chrome sẽ hiển thị hộp thoại cho phép người dùng khởi chạy ứng dụng.

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