Chrome 擴展機制


    據說,今年9月份開始,谷歌將在Chrome瀏覽器中全面禁用NPAPI插件,Chrome 45以后將無法再加載NPAPI插件,並推出了一種新的機制:擴展。

    其實,如果把瀏覽器看作一塊畫布的話,NPAPI插件就像掛在畫布上的各種小飾品,而擴展更像拼接在畫布外小拼圖。無論是插件還是擴展,都是為了讓這副畫更符合用戶的期望。下面就只准備簡單介紹一下擴展和Native Message機制。

    擴展安裝包

    一個完整的擴展包,最終會一個.crx的壓縮文件包存在,使用zip的解壓文件可以直接打開的。

   擴展安裝,共有兩種方式:

   1)在Google APP Store中,找到相關的擴展,直接點擊添加

   2)在Chrome瀏覽器的地址欄中,輸入chrome://extensions,打開擴展管理頁面;

        再將crx文件,直接拖進去就好了。

    如果擴展無法與瀏覽器搭上線,那么擴展就真的一個塊恰好放在瀏覽器邊上的一塊小拼圖了。

    擴展與瀏覽器間的通信,可以有兩種形式:

    1)短連接    

        發送消息:chrome.runtime.sendMessage

        接收事件:chrome.runtime.onMessage.addListener

    2)長連接

         發送消息:var port = chrome.runtime.connect            

                       port.postMessage

        接收事件:port.onMessage.addListener

    在某些時候,只通過擴展無法達到我們預期的效果,這個時候就需要引入Host端。從瀏覽器看下來,就是:瀏覽器<----->擴展<------>Host端。就是說:瀏覽器與擴展可以相互通信,擴展與Host端可以相互通信,但是Host端與瀏覽器無法直接通信。Chrome的示例給出的Demo,也是這樣的一個結構。

    擴展與Host端的通信,就需要遵從Native Message機制的。為了實現Native Message機制通信,需要提前做些准備:

    1)Host端、擴展

    2)Host端的JSON文件,在這個文件中定義了Host應用的名稱,並為其綁定了擴展ID。只有在這里綁定過的,才是合法的,才是可以進行通信。

    3)Host端的JSON文件,既然這么重要,那么瀏覽器要怎么樣才能找到這個文件呢?

         Windows平台下,是寫在了注冊表中;Mac下則是放在了指定目錄下。

         Windows平台:HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.my_company.my_application或

                              HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.my_company.my_application

         Mac平台:/Library/Google/Chrome/NativeMessagingHosts/com.my_company.my_application.json 或

          ~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.my_company.my_application.json

    Native Message機制的通信方式,也有兩種形式:

    1)短連接

        發送消息:chrome.runtime.sendNativeMessage

    2)常連接

        發送消息:var port = chrome.runtime.connectNative

                      port.postMessage

        接收事件:port.onMessage.addListener

                      port.onDisconnect.addListener

    關於Native Message機制,需要注意

    1)擴展與Host端的通信,其實理解可以為基於標准輸入輸出接口的進程通信。在Host端中,必須以二進制流的方式進行讀寫。

    2)從擴展到Host端的,單條消息最大不超過4GB

        從Host端到擴展的,單條消息最大不超過1MB

    3) 每條消息,都一個4字節的頭,用來表示消息的長度。

    Google的官方說明:

Chrome starts each native messaging host in a separate process and communicates with it using standard input ( stdin ) and standard output ( stdout ). The same format is used to send messages in both directions : each message is serialized using JSON, UTF-8 encoded and is preceded with 32-bit message length in native byte order .  The maximum size of a single message from the native messaging host is 1 MB , mainly to protect Chrome from misbehaving native applications.  The maximum size of the message sent to the native messaging host is 4 GB.

  

參考網址

NPAPI的介紹

https://zh.wikipedia.org/wiki/NPAPI

https://developer.chrome.com/extensions/npapi

某軟件給出的擴展安裝方式

http://honx.in/i/U7JbRYKo13vu6TsJ

中文文檔(比官方更新要慢些)

http://chrome.cenchy.com/index.html

http://open.chrome.360.cn/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM