Pocket のトラッキングURLパラメータを外す
by
Lhankor_Mhy
03/12 [2024/03/12 12:15:07]
Pocket のリンクから ?utm_source=pocket_saves などを外します。
@@ -2,7 +2,7 @@
// @name Pocket のトラッキングURLパラメータを外す
// @title Pocket のトラッキングURLパラメータを外す
// @namespace https://let.hatelabo.jp/Lhankor_Mhy/let/kLOm3rHEgeAA
-// @version 0.1
+// @version 0.1.1
// @description Pocket のリンクから ?utm_source=pocket_saves などを外します。
// @author Lhankor_Mhy
// @license CC0
@@ -13,23 +13,26 @@
// ==/UserScript==
{
- let timerId;
- new MutationObserver((mutationList, observer) => {
- mutationList.forEach((mutation) => {
- switch (mutation.type) {
- case "childList":
- clearTimeout(timerId);
- timerId = setTimeout(omitTrackingParameter, 500)
- break;
- }
+ let timerId;
+ new MutationObserver((mutationList, observer) => {
+ mutationList.forEach((mutation) => {
+ switch (mutation.type) {
+ case "childList":
+ clearTimeout(timerId);
+ timerId = setTimeout(omitTrackingParameter, 500)
+ break;
+ }
+ });
+ }).observe(document.body, {
+ childList: true,
+ subtree: true,
});
- }).observe(document.body, {
- childList: true,
- subtree: true,
- });
- const omitTrackingParameter = () =>
- document.querySelectorAll('a:where([data-cy="image-link"],[data-cy="content-block"],[data-cy="view-original"],[data-cy="publisher-link"])').forEach(el =>
- el.href = el.href.replace(/[?|&]utm_source=pocket_(saves|reader)/, '')
- )
-}
-
+ const omitTrackingParameter = () =>
+ document.querySelectorAll('a:where([data-cy="image-link"],[data-cy="content-block"],[data-cy="view-original"],[data-cy="publisher-link"])').forEach(el => {
+ const url = new URL(el.href);
+ const searchPrams = url.searchParams;
+ searchPrams.delete('utm_source');
+ url.search = searchPrams.toString();
+ el.href = url.href;
+ })
+}
// ==UserScript==
// @name Pocket のトラッキングURLパラメータを外す
// @title Pocket のトラッキングURLパラメータを外す
// @namespace https://let.hatelabo.jp/Lhankor_Mhy/let/kLOm3rHEgeAA
// @version 0.1.1
// @description Pocket のリンクから ?utm_source=pocket_saves などを外します。
// @author Lhankor_Mhy
// @license CC0
// @match https://getpocket.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=getpocket.com
// @run-at document-idle
// @grant none
// ==/UserScript==
{
let timerId;
new MutationObserver((mutationList, observer) => {
mutationList.forEach((mutation) => {
switch (mutation.type) {
case "childList":
clearTimeout(timerId);
timerId = setTimeout(omitTrackingParameter, 500)
break;
}
});
}).observe(document.body, {
childList: true,
subtree: true,
});
const omitTrackingParameter = () =>
document.querySelectorAll('a:where([data-cy="image-link"],[data-cy="content-block"],[data-cy="view-original"],[data-cy="publisher-link"])').forEach(el => {
const url = new URL(el.href);
const searchPrams = url.searchParams;
searchPrams.delete('utm_source');
url.search = searchPrams.toString();
el.href = url.href;
})
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。