开始作的时候,真不知道从哪开始下手,还好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 })