很多这个脚本基本上是从其他人的脚本中剪切和粘贴的,但我对.remove
或.removeChild
都有一个奇怪的问题没能跑。该脚本此时崩溃了用户脚本引擎。
// ==UserScript==
// @name Strip Gocomics Sidebar
// @version 1
// @grant none
// @include https://www.gocomics.com/*
// ==/UserScript==
window.addEventListener('load', setkillsidebar);
function setkillsidebar() {
var interval = Math.random() * 5000 + 1000;
setTimeout(killsidebar, interval);
}
function killsidebar() {
console.log("Start Session");
// const adSidebar = document.querySelectorAll('.gc-container-fluid .layout-2col-sidebar, .gc-page-header--hero .layout-2col-sidebar');
var adSidebar = document.getElementsByClassName('.gc-container-fluid .layout-2col-sidebar, .gc-page-header--hero .layout-2col-sidebar');
console.log("Got Elements " + adSidebar.length );
if (adSidebar) {
console.log("Found SideBar");
var myParent = adSidebar.parentNode;
console.log("Made Parent");
// myParent.remove();
adSidebar.parentNode.removeChild(adSidebar);
console.log("Stripped SideBar");
var interval = Math.random() * 5000 + 1000;
console.log("Timer Time " + interval );
setTimeout(killsidebar, interval);
console.log("Set Timer");
}
}
因此,通过添加console.log项,我在Firefox的Web控制台中获得以下内容:
那是一个包装,我在.remove
或.removeChild
都死了,所以要么我没有正确地做某事,要么我遇到安全设置问题阻止我从没有人告诉我的网页中删除元素。
有关更多有趣的信息,虽然这篇文章的标题是Greasemonkey,但这也失败了Tampermonkey。
P.S。除了一些时尚的CSS之外,它还被用于允许我在小型显示器上拥有更大的漫画视图。如果时尚正在运行并不重要。
答案 0 :(得分:0)
该用户脚本存在许多问题,但它们大部分归结为:您需要在控制台中记下错误消息并谷歌查看导致它们的功能。
例如:
getElementsByClassName
的工作方式。querySelectorAll
不会返回节点。parentNode
和removeChild
都在单个节点上执行。另外:似乎不需要第二个setTimeout
。而且load
事件监听器也(可能)是多余的。
以下是纠正这些缺陷的脚本:
// ==UserScript==
// @name Gocomics, Strip Sidebar
// @match https://www.gocomics.com/*
// @version 2
// @grant none
// ==/UserScript==
var interval = Math.random () * 5000 + 1000;
setTimeout (killsidebar, interval);
function killsidebar () {
//-- querySelector() and querySelectorAll () are not the same.
var adSidebar = document.querySelector ('.gc-container-fluid .layout-2col-sidebar, .gc-page-header--hero .layout-2col-sidebar');
if (adSidebar) {
adSidebar.parentNode.removeChild (adSidebar);
}
}
虽然,这个脚本可能会表现得更好:
// ==UserScript==
// @name Gocomics, Strip Sidebar
// @match https://www.gocomics.com/*
// @version 2
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// @grant GM.getValue
// ==/UserScript==
//- The @grant directives are needed to restore the proper sandbox.
waitForKeyElements (
".gc-container-fluid .layout-2col-sidebar, .gc-page-header--hero .layout-2col-sidebar",
removeNode
);
function removeNode (jNode) {
jNode.remove ();
}
它使用waitForKeyElements
- 比直线setTimeout
更快,更强大。