remove view count numbers & tweet analytics links from Twitter timeline because fuck that
当前为
// ==UserScript==
// @name nuke tweet view counts
// @namespace http://elycien.com/
// @version 0.3
// @license GNU GPLv3
// @description remove view count numbers & tweet analytics links from Twitter timeline because fuck that
// @author Elcie
// @match http*://*twitter.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
(function() {
'use strict';
const targetNode = document.querySelector('body');
const config = { attributes: true, childList: true, subtree: true };
const callback = function(mutationsList, observer) {
for (let mutation of mutationsList) {
let elements = document.querySelectorAll('[aria-label*="View Tweet analytics"]');
for (let targetedElement of elements) {
let parent = targetedElement.parentElement;
if (parent) {
if (parent.style.display != 'none') {
parent.style.display = 'none';
}
}
else {
if (targetedElement.style.display != 'none') {
targetedElement.style.display = 'none';
}
}
}
if (window.location.pathname.includes("status")) {
elements = document.querySelectorAll('[href*="analytics"]');
let path = "//span[contains(text(),'View')]";
for (let targetedElement of elements) {
var viewText = document.evaluate(path, targetedElement, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);
if (viewText) {
let parent = targetedElement.parentElement;
if (parent) {
if (parent.style.display != 'none') {
parent.style.display = 'none';
}
}
else {
if (targetedElement.style.display != 'none') {
targetedElement.style.display = 'none';
}
}
}
}
}
}
};
const observer = new MutationObserver(callback);
observer.observe(targetNode, config);
})();