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