refactoring
This commit is contained in:
		
							
								
								
									
										49
									
								
								scripts/content/content.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								scripts/content/content.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| chrome.runtime.onMessage.addListener( | ||||
|     function (request, sender, sendResponse) { | ||||
|         if (!request.action) return; | ||||
|         // console.log("Recieved request:",request); | ||||
|         switch (request.action) { | ||||
|             case ACTION_EXTRACT: | ||||
|                 let data = extract(request.itemsSelector, request.fieldSelectors); | ||||
|                 if (sendResponse) sendResponse(data); | ||||
|                 break; | ||||
|             case ACTION_GOTO_URL: | ||||
|                 window.location.replace(request.url); | ||||
|                 if (sendResponse) sendResponse(request.url); | ||||
|                 break; | ||||
|             case ACTION_REPORT_IN: | ||||
|                 if (sendResponse) sendResponse(request.action); | ||||
|                 break; | ||||
|             case ACTION_QUERY_URL: | ||||
|                 if (sendResponse) sendResponse(window.location.href); | ||||
|                 break; | ||||
|             default: | ||||
|                 break; | ||||
|         } | ||||
|     } | ||||
| ); | ||||
|  | ||||
| function extract(itemsSelector, fieldSelectors) { | ||||
|     // let fieldNotFound = false; | ||||
|     let items = Array.from(document.querySelectorAll(itemsSelector)); | ||||
|     if (!items.length) return []; | ||||
|     let results = items.map( | ||||
|         item => { | ||||
|             return fieldSelectors.map( | ||||
|                 selector => { | ||||
|                     let [cls, attr] = selector.split('@').slice(0, 2); | ||||
|                     // TODO: close tab to cancel task tip | ||||
|                     // if (fieldNotFound) return; | ||||
|                     let fieldVals = Array.from(item.querySelectorAll(cls)); | ||||
|                     // if (!fieldVals.length) { | ||||
|                     //     fieldNotFound = true; | ||||
|                     //     return; | ||||
|                     // } | ||||
|                     return fieldVals.map(find => attr ? find[attr] : find.textContent.trim()).join('\n') | ||||
|                 } | ||||
|             ) | ||||
|         } | ||||
|     ); | ||||
|     // return fieldNotFound ? [] : results | ||||
|     return results; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user