開始作的時候,真不知道從哪開始下手,還好360業界良心有份Chrome Extension 的中文翻譯文檔html
http://open.chrome.360.cn/extension_dev/tabs.htmlchrome
有兩個最有難度了(我的認爲):windows
1.XMLHTTPRequest異步
該協議只能請求到xml文檔,致使以前一個重試的html響應不到,最後只能從新寫一個xml返回ide
2.chrome API異步this
因爲是異步,不能調用本身類中的方法。最後解決方法是寫成兩個類,異步類調用另外一個類的方法url
下面貼傷代碼:spa
1 var kittenGenerator = { 2 GetItem:function(){ 3 var item=null 4 chrome.windows.getCurrent(function(window){ 5 chrome.tabs.getSelected(window.id,function(tab){ 6 url=tab.url.split('/')[3] 7 item=url.substr(0,url.indexOf('.')) 8 url='http://www.kjt.name:8888/getRelByItem/'+item 9 isw.requestKittens(url) 10 }) 11 }) 12 return item 13 } 14 15 }; 16 17 var isw={ 18 requestKittens: function(url) { 19 var req = new XMLHttpRequest(); 20 req.open("GET", url, true); 21 req.onload = this.showPhotos_.bind(this); 22 req.send(null); 23 }, 24 25 showPhotos_: function (e) { 26 var kittens = e.target.responseXML.querySelectorAll('task'); 27 var urls=new Array() 28 for (var i = 0; i < kittens.length; i++) { 29 imgsrc=this.constructKittenURL_(kittens[i]); 30 urls[i]=imgsrc 31 } 32 chrome.windows.create({ 33 'url':urls 34 }) 35 }, 36 37 constructKittenURL_: function (photo) { 38 return photo.getAttribute("href") 39 } 40 } 41 42 chrome.browserAction.onClicked.addListener(function(){ 43 kittenGenerator.GetItem() 44 })