Как я могу запустить jQuery если ($ (this) операторы для отправки browser.runtime.sendMessage? - PullRequest
0 голосов
/ 28 октября 2019

Как я могу использовать jQuery, если ($ (this) для обновления моего значка расширения? Я пробовал приведенный ниже код, и он не работает.

jQuery("a[onclick*='ga']").removeAttr('onclick');
if($(this).attr('onclick') == 'ga'){
    var add = browser.runtime.sendMessage(message, 'Removed += 1')
}

Он должен добавлять +1 для каждогосоответствие элемента a[onclick='ga'], потому что это то, что он собирается заблокировать.

Необходимые сценарии для расширения:

manifest.json

{
     "manifest_version": 2,
     "name": "Anti Click Tracking",
     "version": "2.2.4",
     "description": "Remove Known HTML <a> and <link> Click Tracking Attributes.",
  "background": {
     "scripts": ["background.js"]
        },
	 "content_scripts": [
            {
         "js": [
             "/jquery/jquery-3.4.0.min.js", "remove.js"
                ],
         "matches": [
             "<all_urls>"
           ]
       }
   ],
"permissions": ["<all_urls>", "webRequest", "webRequestBlocking"],
}

background.js

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    
    if (!message) return
    if (message <= 0) return
    const text = message.toString()
    
    chrome.tabs.get(sender.tab.id, function(tab) {

        // Pre-rendered tab has been nuked
        if (chrome.runtime.lastError) return

        // Tab is visible
        if (tab.index >= 0) {
            chrome.browserAction.setBadgeText({
                tabId: tab.id,
                text: text
            })

            return
        }

        // Invisible pre-rendered tab
        const tabId = sender.tab.id
        chrome.webNavigation.onCommitted.addListener(function update(details) {
            if (details.tabId == tabId) {
                chrome.browserAction.setBadgeText({
                    tabId: tabId,
                    text: text
                })
                
                chrome.webNavigation.onCommitted.removeListener(update)
            }
        })
    })
})

remove.js

// Remove ping attribute from <a> (somewhat based on PingBlock)
window.onload = function() {
    
	let Removed = 0
    const anchorElements = document.getElementsByTagName('A')
    
    for (element of anchorElements) {
        if (!element.getAttribute('ping')) continue
			console.log("Removed ping: " + element.getAttribute('ping'))
				element.removeAttribute('ping')
				Removed += 1
				chrome.extension.sendMessage(Removed)
    }
}

// Remove Link Tracking
link();

function link(){
	
	jQuery("a[onclick*='ga']").removeAttr('onclick');
	jQuery("a[onclick*='_gaq.push']").removeAttr('onclick');
	jQuery("link[rel*='pingback']").removeAttr('rel');

}

Весь этот код вместе обновляет значок, только когда атрибут ping заблокирован. Мне также нужно обновить значок, когда jQuery удаляет выбранные атрибуты. Можно ли использовать Removed += 1, как я делал в первой части для jQuery, или мне придется изменить его на что-то другое?

...