From 43bb837abdcd6f83f966249df03ec64e02a1b910 Mon Sep 17 00:00:00 2001 From: jebbs Date: Thu, 27 Sep 2018 20:57:42 +0800 Subject: [PATCH] extractTabData report [] if any field element not found --- scripts/content.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/scripts/content.js b/scripts/content.js index 4845f8e..00f8e63 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -36,12 +36,23 @@ chrome.runtime.onMessage.addListener( ); function extractTabData(itemsSelector, fieldSelectors) { - return $(itemsSelector).toArray().map( - item => fieldSelectors.map( - selector => { - let [cls, attr] = selector.split('@').slice(0, 2); - return $(item).find(cls).toArray().map(find => attr ? find[attr] : find.textContent.trim()).join('\n') - } - ) + let fieldNotFound = false; + let results = $(itemsSelector).toArray().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 = $(item).find(cls).toArray(); + if (!fieldVals.length) { + fieldNotFound = true; + return; + } + return fieldVals.map(find => attr ? find[attr] : find.textContent.trim()).join('\n') + } + ) + } ); + return fieldNotFound ? [] : results } \ No newline at end of file