我频频出现一个忽视用户的可怕方式的论坛。如果你忽略某人,那几乎会使用户的存在更加普遍。
所以我写这篇文章是为了完全隐藏它们:
// ==UserScript==
// @name Freddie
// @namespace http://tampermonkey.net/
// @version 0.1
// @description hide annoying forum users
// @author You
// @match http://www.scout.com/college/kansas/forums/*
// @grant none
// ==/UserScript==
/* jshint -W097 */
'use strict';
function checkForDiv() { // crappy workaround function to wait for AJAX content
if (!document.getElementById("wrapper")) {
setTimeout(checkForDiv, 300);
} else {
checkNames();
}
}
function checkNames() {
var mybannedList = ["Pyros", "GOHawksGators", "th30r3o"]; // add usernames here
var nms = document.body.querySelectorAll('a.authName'), i = 0, len = nms.length;
for (i; i < len; i++) {
if (mybannedList.indexOf(nms[i].innerHTML) != -1) {
nms[i].parentNode.parentNode.style.display = "none";
}
}
}
checkForDiv();
但是当您使用被忽略的用户进入页面时,它们仍然会出现,刷新后,脚本会运行并消失。
请好先生,我该怎么办?
答案 0 :(得分:1)
该网站使用AJAX进行导航,因此页面地址无需重新加载即可更改,这就是为什么当您从该网站上的其他页面导航时,Tampermonkey不会注入您的脚本。
最简单的解决方案是包含整个网站:// @match http://www.scout.com/*
还有其他更先进的方法可以检测基于MutationObserver的页面转换或导航时发生的某些DOM事件或属性更改。
还要注意@grant none
通过@require
加载jQuery:它会破坏除了使用jQuery.noConflict之外还加载jQuery的网站。最简单的解决方案是删除该行,因为您不需要访问网页变量。
P.S。有一个已知的基于计时器的包装器:waitForKeyElements。