去除「IT之家」博客版信息流广告
当前为
// ==UserScript==
// @name IThome Fix
// @namespace http://your-namespace.com
// @version 3.3
// @description 去除「IT之家」博客版信息流广告
// @author https://blog.tongmingzhi.com
// @match https://www.ithome.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Function to set rounded images with proportional height and a border
function setRoundedImages() {
var images = document.querySelectorAll('img');
images.forEach(function(image) {
if (image.width >= 30) {
image.parentElement.style.border = 'none';
image.style.borderRadius = '12px';
image.style.border = '2px solid #CCC';
if (image.height > 150) {
image.style.borderRadius = '12px';
image.style.border = '2px solid #CCC';
image.style.display = 'inline';
image.style.maxWidth = '400px';
image.style.height = 'auto';
image.style.objectFit = 'cover';
image.style.overflow = 'hidden';
}
}
});
}
// Function to set rounded corners for comments
function setRounded() {
var roundeds = document.querySelectorAll(
'.comm_list ul.list li.entry ul.reply, ' +
'.content .post_content blockquote, ' +
'.add_comm input#btnComment' +
'.card, span.card'
);
roundeds.forEach(function (rounded) {
rounded.style.borderRadius = '12px';
});
var addCommElements = document.querySelectorAll('.add_comm');
addCommElements.forEach(function (addCommElement) {
addCommElement.style.borderRadius = '0px 0px 12px 12px';
});
var Cards = document.querySelectorAll('.card, span.card');
Cards.forEach(function (card) {
card.style.transform = 'scale(0.8)';
});
var Videos = document.querySelectorAll('.ithome_super_player');
Videos.forEach(function (Video) {
Video.style.border = '2px solid #CCC !important';
Video.style.borderRadius = '12px';
Video.style.marginLeft = 'auto';
Video.style.marginRight = 'auto';
Video.style.width = '400px';
Video.style.height = 'atuo';
});
}
// Function to remove ads
function removeAds() {
document.querySelectorAll(
'div.bb.clearfix > div.fl > ul.bl > li'
).forEach(function(element) {
if (element.querySelector('div.c > div.m:empty')) {
element.remove();
}
});
}
// Function to observe DOM changes
function observeDOM() {
var targetNode = document.body;
var config = { childList: true, subtree: true };
var callback = function(mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
setRoundedImages();
setRounded();
removeAds();
}
}
};
var observer = new MutationObserver(callback);
observer.observe(targetNode, config);
return observer;
}
function checkDOMChanges() {
var observer = observeDOM();
var interval = setInterval(function() {
setRoundedImages();
setRounded();
removeAds();
}, 20);
return interval;
}
window.addEventListener('load', function() {
setRoundedImages();
setRounded();
removeAds();
var intervalID = checkDOMChanges();
setTimeout(function() {
clearInterval(intervalID);
}, 60000);
});
})();