Я бы посоветовал вам объединить ваш linkArray
в селектор CSS, например:
a[href^="link1"], a[href^="link2"], ...
Затем используйте этот селектор в document.querySelectorAll
, чтобы получить перечисленные ссылки и style
им.
Итак, ваша функция будет выглядеть следующим образом:
function highlight() {
var linkArray = ['bad', 'awful', 'horrible', 'dead'];
// preparing the code as a string
var code = `
document.querySelectorAll(
'${linkArray.map(l => `a[href^="${l}"]`).join(',')}'
).forEach(a => a.style.border = 'solid 2px red')
`;
// executing the code
chrome.tabs.executeScript(null, {code: code});
}
Следующий фрагмент является рабочим примером:
// Faking 'chrome.tabs.executeScript' to make it work in the snippet.
// You don't need it in your extension.
var chrome = {tabs: {executeScript: (_, {code}) => eval(code)}};
highlight();
function highlight() {
var linkArray = ['bad', 'awful', 'horrible', 'dead'];
// preparing the code as a string
var code = `
document.querySelectorAll(
'${linkArray.map(l => `a[href^="${l}"]`).join(',')}'
).forEach(a => a.style.border = 'solid 2px red')
`;
// executing the code
chrome.tabs.executeScript(null, {code: code});
}
<a href="bad">Bad link</a>
<a href="ok">OK link</a>
<a href="awful">Awful link</a>
<a href="horrible">Horrible link</a>
<a href="good">Good link</a>
<a href="nice">Nice link</a>
<a href="dead">Dead link</a>
<a href="bad#2">Bad#2 link</a>