簡體   English   中英

Chrome擴展程序中的公共NPAPI插件無法加載

[英]Public NPAPI plugin from Chrome extension fails to load

我有一個NPAPI插件,並入Chrome擴展程序,並在清單文件中定義為公共。 當具有插件的mime類型的對象標簽插入擴展的背景頁面時,插件會加載成功。 當使用chrome.tabs.executeScript將相同的對象標簽插入任意網頁時,該標簽將無法加載。 如果將插件本身放置在Plugins文件夾中(並加載到瀏覽器中),則具有適當的mime類型的對象將成功插入任意網頁中。

問題是為什么插件沒有正確加載到任意網頁中,當它被部署在擴展中並被標記為公共時(據我所知它應該可用於任何頁面)。

您應該在擴展程序清單中使用"public": true 標記該插件 "public": true 該插件應該出現在about:plugins

如果插件顯示,請確認about:plugins中的MIME類型和文件擴展名與注入頁面的embed元素的類型相匹配。 還要檢查其他插件是否具有相同的MIME類型。 如果前面列出的插件具有相同的MIME類型,則將加載插件。

如果您的插件沒有顯示出來,或者它顯示了但不能正常工作,則您需要做更多的偵探工作:

您可以使用--debug-plugin-loading標志啟動Chrome,以從插件基礎結構獲取更多日志記錄。 其中一些消息如下所示:

[24634:-1392008512:1466799063452984:ERROR:plugin_list.cc(358)] Loading plugin /Library/Internet Plug-Ins/Flash Player.plugin

盡管包含ERROR一詞,但這些消息並非錯誤。 錯誤只是日志級別。 使用Chromium Code Search和日志中提到的文件(例如plugin_list.cc)來讀取上下文中的日志消息。 Chrome使用多進程架構。 因此請記住,輸出可能會散布來自不同進程的日志消息。

如果您有插件的來源,則將日志記錄語句放入插件代碼中。 例如,在OS X上你可以寫:

NPError NP_GetEntryPoints(NPPluginFuncs *pluginFuncs) {
  NSLog(@"FOO NP_GetEntryPoints");
  …

接着

2012-08-20 11:22:56.799 Google Chrome Helper EH[23544:b03] FOO NP_GetEntryPoints

將顯示在日志中。 這些日志語句可以為您提供有關插件加載失敗之前的進展的更多線索。

這需要一些努力,但您可以從頭開始構建Chromium並使用--plugin-launcher命令行選項來獲取插件加載器的源級調試。

根據要求發布帶有我的評論的答案=]

如果您使用公共插件安裝擴展程序(並且所有內容都已正確安裝),那么它將顯示在about:plugins中。 因此,您的擴展程序/插件安裝有問題。 不幸的是,這就是我所知道的。

注釋中所述的about:plugins將顯示所有公共插件,無論是作為擴展中的公共插件安裝還是僅作為NPAPI插件安裝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM