開發Chrome入門【一】

最近想研究一下,怎麼給Chrome開發插件,也想用其作爲本科的畢業設計,所以開始起步吧.................

找到一篇起步篇,於是,轉一下:

轉自:http://blog.csdn.net/mirkerson/article/details/5901241

-----------------------------------------------------------------------------------------------------

Chrome插件開發之一: 搭建基本結構

歡迎喜愛Chrome的谷友進入Chrome插件開發的世界!

你很幸運,因爲Chrome插件開發是如此簡單,你不需要明白什麼是ActiveX,不需要知道什麼叫COM,嗯,讓他們一邊涼快去吧,這裏只有HTML & Javascript,這裏是互聯網的世界!

 

首先,會英文的同學請瀏覽一下官方開發文檔~:

http://code.google.com/chrome/extensions/getstarted.html

本系列博文主要分享開發重點,具體細節不一一贅述(PS:若無法訪問,請f-a-n, q-i-a-n-g……)

1. 文件列表

本文引用項目 urlcmt 作爲開發示例(urlcmt是一個可以對任意網頁進行評論的Chrome插件,你可以 下載源代碼,或 安裝此插件),爲了讓插件正常工作,至少需要這幾個文件:

【此圖貌似看不見啊】

它們的作用分別是:

  • icon.png: 插件工具欄圖標
  • manifest.json: 控制整個插件行爲的配置文件
  • popup.html: 點擊插件圖標後彈出的窗口,是插件的主界面

如果希望插件具有更加合理的結構和功能,則還可以有以下文件:

【此圖貌似也看不見啊】

他們的作用分別是:

  • imgs: 存放插件界面圖片
  • background.html: 在此運行的代碼不會因爲popup.html窗口消失而停止運行
  • icon_128.png: 在插件描述中作爲插件的Logo
  • main.css: 插件界面元件的樣式表
  • main.js: 插件中可以使用的js函數

2. 文件說明

manifest.json 爲整個插件的主控文件,基本功能描述如下:

01 {
02     "name": "urlcmt",
03     "version": "1.0",
04     "description": "網頁評論 Comment the web !",
05     "default_locale": "zh_CN",
06     "browser_action": {
07         "default_icon": "icon.png",
08         "popup": "popup.html"
09     },
10     "icons": {
11         "128": "icon_128.png"
12     },
13     "permissions": [
14         "tabs",
15         "http://api.gdfans.net/"
16     ]
17 }

其中:

  • 第2行: 所有代碼思想的核心,它就是插件的名稱!
  • 第3行: 插件版本,發佈插件時會生成一串密文,那時會用到
  • 第4行: 描述信息,會顯示在插件屬性裏
  • 第5行: 默認編碼爲中文
  • 第7行: 指定插件圖標的路徑
  • 第8行: 指定 popup.html 文件的路徑
  • 第11行: 指定 128 像素大小的圖標的路徑
  • 第14行: 此權限支持讀取標籤(tab)中的信息
  • 第15行: 此權限支持向 http://api.gdfans.net/ 發送 Ajax 請求

popop.html 爲整個插件的界面,代碼如下:

01 <!DOCTYPE html>
02 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
03 <link rel="stylesheet" href="main.css" />
04 <script type="text/javascript" src="./url.js"></script>
05 <script type="text/javascript" src="./main.js"></script>
06  
07 <body onload="init()">
08     <div id="pop_msg" class="align_center colo_aaa valign_center"></div>
09     <div class="submit_form align_center">
10         <form id="cmt_submit_form" onsubmit="submit_cmt();return false;" action="#" method="POST">
11             <textarea rows="1" cols="6" id="cnt" class="align_left"onfocus="show_submit_form();" maxlength="200"></textarea>
12             <br />
13             <div class="align_right">
14                 <input type="submit" id="sbmt" value="submit">
15             </div>
16         </form>
17     </div>
18     <div id="cmt_cnt"></div>
19 </body>

這裏注意:

  • 第1行: 加上這個以後,顯示插件界面時,不會在底部出現一大片空白區域
  • 其餘都和普通 web 頁面開發相同,空的 div 供 Ajax 填充從服務端獲取的數據

3. 實現功能 – 插件初始化

有了 manifest.json 和 popup.html,就可以實現最基本的 hello world 的功能了,接下來需要爲插件增加其它功能,這些功能可以用 Javascript & Ajax 實現,對此項技術不太熟悉的同學,請 點擊這裏 查閱 w3c school 裏的教程。

這些 Javascript & Ajax 代碼可以寫在 main.js 中,因爲不僅 popup.html 要用到,後續要介紹的 background.html 中也要用到,所以爲了重用起見,還是放在單獨的文件裏比較好。main.js 中可以包含一個 init() 函數,用以進行插件的初始化工作

1 function init()
2 {
3     // 隱藏編寫評論的表單,以增大頁面的可用區域
4     hide_submit_form();
5     // 從服務端獲取當前網頁的評論數據,並顯示在界面上
6     refresh_cmt_cnt(1);
7 };

然後在 popup.html 的 body 標籤中,加上

1 <body onload="init()">

即可。

4. 實現功能 – 調用 Chrome API

Chrome爲插件提供了可以通過 Javascript 調用的 API,在插件的 Js 代碼可以直接使用,例如想獲取當前標籤中的 URL 地址,並向服務端發送 Ajax 請求獲取這個 URL 對應的評論信息,可以這麼寫:

01 function refresh_cmt_cnt(page_no)
02 {
03     // 創建 Ajax 請求對象
04     var xhr = new XMLHttpRequest();
05  
06     // 使用Chrome提供的tab接口獲取當前選中的tab的信息
07     chrome.tabs.getSelected(nullfunction(tab) {
08         // 當 getSelected 函數執行成功以後會執行到這裏
09         var cmt_cnt_obj = document.getElementById("cmt_cnt");
10  
11         // 構造 POST 數據,可以通過 tab.url 來獲取標籤的 URL 地址
12         // encodeURIComponent 函數用來轉義特殊字符以免發生衝突
13         // 在服務端可以用 PHP 函數 urldecode 再轉義回來
14         var post_data = 'cmd=1505&alt=json&url=' +
15                         encodeURIComponent(tab.url) +
16                         '&page_size=5&page_no=' + page_no;
17  
18         // 指定提交的目標地址
19         xhr.open("POST""http://api.gdfans.net/",
20                  true);
21         xhr.setRequestHeader("Content-Type",
22                              "application/x-www-form-urlencoded");
23  
24         xhr.onreadystatechange = function() {
25             if (xhr.readyState == 4) {
26                 // 當 Ajax 請求接收完所有返回數據時會執行到這裏
27                 // 因爲服務端返回的數據爲 json 格式,因此使用前需要解析以下
28                 var resp = JSON.parse(xhr.responseText);
29                 if (! resp) {
30                     show_popmsg(null'獲取數據失敗', 3);
31                     return false;
32                 }
33  
34                 // 解析完成以後就可以讀取返回的數據了
35                 if (resp.result == 1501) {
36                     clear_popmsg();
37                     return false;
38                 }
39  
40                 // 將數據顯示在頁面上
41                 for (var key in resp.data) {
42                     htmltxt += resp.data[key]['cmt'] + ', ';
43                 }
44  
45                 cmt_cnt_obj.innerHTML = htmltxt + "/n";
46             }
47         }
48  
49         // 發送 Ajax 請求,Ajax 執行成功以後會調用上面介紹的代碼
50         xhr.send(post_data);
51     });
52  
53     return true;
54 }

至此一個可以從服務端獲取 URL 評論數據的簡單插件就製作完成了,只要你熟悉 Web 開發,開發 Chrome 插件就是小菜一碟~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章