无法理解为什么此代码不编辑 FB 页面中的 'href' 属性

Can't figure why this code don't edit the 'href' attributes in FB pages

我想知道为什么这段代码不编辑 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;
        }
    }

})();

我认为你有一个分号导致了问题。

(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;
            }
        }

由于运行了这段代码,这可能意味着问题与您的正则表达式有关。