Как я могу получить .getAttribute и .removeAttribute, чтобы соответствовать [onclick * = 'ga'] - PullRequest
0 голосов
/ 29 октября 2019

Мне не удается заставить мое веб-расширение блокировать [onclick * = 'ga'] в качестве атрибута.

Я пытался использовать

window.onload = function() {

let Removed = 0
const anchorElements = document.getElementsByTagName('A')

for (element of anchorElements) {
    if (!element.getAttribute('a[onclick*='ga']')) continue
            element.removeAttribute('a[onclick*='ga']')
            Removed += 1
            chrome.extension.sendMessage(Removed)
    }
}

и

window.onload = function() {

let Removed = 0
const anchorElements = document.getElementsByTagName('A')

for (element of anchorElements) {
    if (!element.getAttribute("onclick='ga'")) continue
            element.removeAttribute("onclick='ga'")
            Removed += 1
            chrome.extension.sendMessage(Removed)
    }
}

В результате расширение должно удалить любую ссылку с атрибутом onclick 'ga', а затем добавить 1 к удаленному, что обновит значок расширения.

1 Ответ

1 голос
/ 30 октября 2019

В вашем коде есть ошибки. Вот пример для статического контента. Если контент генерируется с помощью JavaScript, он требует дополнительного кода.

Нет необходимости в window.onload

document.querySelectorAll('a[onclick*="ga"]').forEach(item => item.removeAttribute('onclick'));

Если вы хотите вести подсчет

const a = document.querySelectorAll('a[onclick*="ga"]');
a.forEach(item => item.removeAttribute('onclick'));
chrome.runtime.sendMessage(a.length);

Не рекомендуется отправлять асинхронное сообщение runtime.sendMessage внутри вышеуказанного цикла.

...