Интересно, почему этот код не редактирует атрибуты facebook href.

Я почти уверен, что это должно сработать.

Я получаю ошибку в консоли Error: Promised response from onMessage listener went out of scope

Код:

// ==UserScript==
// @name         facebook anti tracking URL
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  remove FB tracking
// @author       MévatlavéKraspek
// @match        https://www.facebook.com/*
// @grant        none
// ==/UserScript==


(function() {
    'use strict';
    for (let a of document.querySelectorAll('a')) {
        try {
            var old_url = a.getAttribute('href');
            if (old_url.match(/l\.facebook/)) {
                var myRegexp = /.*l\.facebook\.com\/l\.php\?u=(.*)\%3Ffbclid.*/;
                var match = myRegexp.exec(old_url);
                var n = decodeURIComponent(match[1]);
                a.setAttribute('href', n);
            }
        } catch(e) {
            true;
        }
    }

})();
1
Mévatlavé Kraspek 4 Май 2021 в 02:22

1 ответ

Лучший ответ

Я думаю, у вас есть одна точка с запятой, которая вызывает проблему.

(function() {
    'use strict';
    for (let a of document.querySelectorAll('a')) {
        try {
            var old_url = a.getAttribute('href');
            if (old_url.match(/l\.facebook/)) {
                var myRegexp = /.*l\.facebook\.com\/l\.php\?u=(.*)\%3Ffbclid.*/;
                var match = myRegexp.exec(old_url);
                var n = decodeURIComponent(match[1]);
                a.setAttribute('href', n);
            }
        } catch(e) {
            true;
        };  // <---- remove this semi-colon
    }

})();

Я запустил следующее на facebook.com (в консоли разработчика), и это сработало:

 for (let a of document.querySelectorAll('a')) {
            try {
                var old_url = a.getAttribute('href');
                console.log(old_url);
            } catch(e) {
                true;
            }
        }

Поскольку этот код работает, это, вероятно, означает, что проблема связана с вашим регулярным выражением.

1
raddevus 3 Май 2021 в 23:48