移除網址中的跟踪參數
当前为
// ==UserScript==
// @name Remove URL Tracking Parameters
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 移除網址中的跟踪參數
// @author abc0922001
// @match *://*/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 使用 Set 來存儲跟踪參數
const trackingParams = new Set([
'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'fbclid', 'gclid', 'yclid', 'mc_cid', 'mc_eid', 'dclid'
]);
function removeTrackingParams(url) {
try {
const urlObj = new URL(url);
let params = urlObj.searchParams;
let removed = false;
trackingParams.forEach(param => {
if (params.has(param)) {
params.delete(param);
removed = true;
}
});
return removed ? urlObj.toString() : url;
} catch (error) {
console.error('Error processing URL:', error);
return url;
}
}
function cleanURL() {
const currentUrl = window.location.href;
const cleanedUrl = removeTrackingParams(currentUrl);
if (cleanedUrl !== currentUrl) {
try {
window.history.replaceState({}, document.title, cleanedUrl);
} catch (error) {
console.error('Error updating URL:', error);
}
}
}
// 初始清理
cleanURL();
// 監聽 URL 變化
window.addEventListener('popstate', cleanURL);
// 對於單頁應用,可以考慮額外監聽自定義事件
// 例如:window.addEventListener('routechange', cleanURL);
})();