Chrome擴展編寫一二三

本文轉自:http://dev.meettea.com/show-93-1.html,如果侵權,請告知!

編寫Chrome擴展的兩個示例。

一、QQ雲詞典
QQ雲詞典提供了收藏夾內點擊即可在當前頁面啓動QQ雲詞典的方式。
但是我不太習慣在chrome下使用收藏夾。搜索Google Chrome擴展網站,未果,於是打算自己寫一個。
1、新建一個文件夾。
2、新建一個 manifest.json

內容

 

JavaScript代碼
  1. {   
  2. "update_url":"http://clients2.google.com/service/update2/crx",     
  3.   "name""QQ雲詞典",     
  4.   "version""1.0",     
  5.   "description""QQ雲詞典快捷方式,適合不習慣收藏夾啓動雲詞典的用戶使用",     
  6.   "browser_action": {     
  7.     "default_icon""favicon.ico",   
  8.     "popup""popup.html"  
  9.   },   
  10.   "permissions": [   
  11.     "tabs""http://*/*","https://*/*"  
  12.   ]   
  13. }  

3、新建一個popup.html
內容

 

JavaScript代碼
  1. <script>   
  2.   chrome.tabs.executeScript(null,   
  3.       {code:"void((function(d){if(!!d){d.toggle();return;};var src='http://dict.qq.com/cloudgetjs';var e=document.createElement('script');e.setAttribute('src',src);document.getElementsByTagName('head')[0].appendChild(e);})(window.QQCloudDict))"});   
  4.   window.close();   
  5. </script>  

4、從dict.qq.com下載一個favicon.ico,放文件夾裏
好的代碼是自解釋的,這樣一個擴展就完成了,用zip壓縮後上傳到google
https://chrome.google.com/extensions/detail/gchhncbmgdmgdgbpdmpcclmieekamijo?hl=zh-cn

注BUGs:,可能因爲權限問題,google的https頁和非WEB的tab頁是不能啓動雲詞典的。

二、Bai.Lu網址短縮插件
這麼快就完成了一個插件,意猶未盡啊。看到tank的bai.lu短網址最近改版了,就試試他提供的api看。

1、新建一個文件夾
2、新建一個manifest.json

JavaScript代碼
  1. {   
  2. "update_url":"http://clients2.google.com/service/update2/crx",     
  3.   "name""Bai.lu網址短縮",     
  4.   "version""1.0",     
  5.   "description""Bai.lu網址短縮,點擊圖標生成當前頁的短縮網址",     
  6.   "browser_action": {     
  7.     "default_icon""favicon.ico",   
  8.     "popup""popup.html"  
  9.   },   
  10.   "permissions": [   
  11.     "tabs""http://*/*","https://*/*"  
  12.   ]   
  13. }  

3、新建一個popup.html

 

XML/HTML代碼
  1. <meta charset="utf-8" />  
  2. <style>  
  3. body,#loading{height:26px;width:230px; font-size:12px; overflow:hidden}   
  4. #url{display:none; width:220px;}   
  5. </style>  
  6. <div id="loading">正在壓縮...</div>  
  7. <input type="text" id="url" />  
  8. <script>  
  9. /*獲取當前的TAB頁*/   
  10. chrome.tabs.getSelected(null,function(tab) {   
  11.     var loading = document.getElementById('loading');   
  12.     loading.innerHTML = "正在壓縮"+tab.title+"...";   
  13.     /*發起ajax請求,經過permissions設置能請求任意網站是chrome擴展一個很方便的地方*/   
  14.     var req = new XMLHttpRequest();   
  15.     req.open(   
  16.         "GET",   
  17.         "http://bai.lu/api?url="+encodeURIComponent(tab.url),   
  18.         true   
  19.     );   
  20.     req.onload = function(){   
  21.         var result = 0;   
  22.         eval("result = "+req.responseText);   
  23.         var url = document.getElementById('url');   
  24.         url.style.display='block';   
  25.         /*關於api返回的結果請參考http://bai.lu/api_help */   
  26.         if(result.status=='ok'){   
  27.             document.getElementById('loading').style.display='none';   
  28.             url.value = result.url;   
  29.             url.select();   
  30.             url.focus();   
  31.             /*複製功能*/   
  32.             document.execCommand('Copy');   
  33.             url.value+=' 已複製到剪切板';   
  34.         } else {   
  35.             var msg = {   
  36.                 busy:'系統繁忙',   
  37.                 'invalid url':'URL格式不正確',   
  38.                 'already shortened':'百路不能被百路',   
  39.                 error:'發生未知錯誤'   
  40.             }   
  41.             if(msg[result.status]){   
  42.                 url.value = msg[result.status];   
  43.             } else {   
  44.                 url.value = '發生未知錯誤';   
  45.             }   
  46.         }   
  47.     }   
  48.     req.onerror = function(){   
  49.         var url = document.getElementById('url');   
  50.         url.style.display='block';   
  51.         url.value = '出錯了,也許是百路宕機了';   
  52.     }   
  53.     req.send(null);   
  54. });   
  55. </script>  

https://chrome.google.com/extensions/detail/legpmlaklpfgcdnbclpabhbhdiickmkh?hl=zh-cn

三、資源、提示與注意事項
1、google的文檔http://code.google.com/chrome/extensions/docs.html 嫌英語麻煩的話可以看他提供的示例,很豐富。
2、能用popup就不要用background,popup佔用瀏覽器的資源少。
3、如果某個功能不會,可直接上google擴展網站在“安裝”按鈕上另存爲並改擴展名爲zip,即可打開源碼研究之。

本文采用Creative Commons協議,複製本文需遵守三點:1、保留署名(鏈接);2、非商業性使用;3、再次創作的作品必須以相同的許可協議發佈。

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