1. 程式人生 > >關於chrome外掛開發(二)

關於chrome外掛開發(二)

本週主要針對chrome瀏覽器的外掛開發進行了細緻化的研究.

首先,對於chrome,我們從跨域請求、操作頁面DOM節點、常駐後臺、頁面間的通訊和cookie的管理這五個方面進行了研究和程式設計,開發出了實現這些功能的chrome外掛。現在我對這幾個方面的重點知識做一總結:

l  跨域請求:chrome的外掛要實現跨域請求,需要在manifest.json檔案裡在“permissions”屬性下定義要訪問的域名,例:“permissions”:[“*://www.baidu.com/*”].

另外,既然跨域了,那必然就要有非同步請求,但是,在發起非同步請求時要注意使用的函式是不是阻塞函式,我們使用的htpRequest函式是一個非阻塞函式,在返回請求結果的時候用callback,而不用return。發起非同步請求的程式碼如下:

FunctionhttpRequest(url,callback){

   Var xhr = new XMLhttpRequest();

   Xhr.open(“GET”,url,true);

   Xhr.onreadystatechange = function(){

      If(xhr.readyState == 4){

         Callback(xhr.responseText);

}

}

                Xhr.send();

}

l  操作頁面DOM節點:在manifest.json裡面的content_scripts屬性裡面定義要使用的頁面以及要執行的JavaScript函式,然後把滑鼠放到要操作的網頁元素上面,點右鍵-審查元素,然後再開發窗口裡面找到這個標籤或元素的ID,在編寫JavaScript函式的時候,要獲取這個ID,並呼叫實現功能的函式。

l  常駐後臺:在manifest中指定background可以使擴充套件常駐後臺,它包含三個屬性:scripts、page和persistent,如果在scripts中指定一個JavaScript檔案,那麼chrome會在擴充套件啟動時自動建立一個包含指定指令碼的頁面;如果指定了page屬性,chrome會將指定的HTML檔案作為後臺頁面執行;persistent屬性設定為true時,擴充套件在後臺一直執行,若為false,按需執行。

l  頁面間的通訊:有兩個函式

Chrome.runtime.sendMessage(extensionId,message,options,callback)

Chrome.runtime.onMessage.addListener(callback)

l  Cookie管理:這一部分還在進一步研究,因為這一部分設計更重要的安全問題,所以下週準備作為重點物件研究