javascript - 我的 Greasemonkey 脚本在控制台中输入时有效,但在 Firefox 中尝试使用时无效

标签 javascript html greasemonkey

我在运行一个简单的 GreaseMonkey 脚本来清理 DuckDuckGo.com 上的搜索结果时遇到问题。下面的代码只是从结果中删除“图像”和“视频”按钮。

// ==UserScript==
// @name        Relevance
// @include     http://duckduckgo.com/*
// @include     https://duckduckgo.com/*
// @version     1
// @grant       none
// ==/UserScript==

function Relevant(){
    var killIt=["zcm__link  js-zci-link  js-zci-link--images  ", "zcm__link  js-zci-link  js-zci-link--videos  "];
    var el = document.getElementsByTagName("a");
    for (i = 0; i < el.length; i++) 
        {
            for (j=0;j<killIt.length; j++) 
                {
                    if (el[i].className==killIt[j]) 
                        {
                            el[i].parentNode.removeChild(el[i]);
                        }
                }
        }
};


$(window).load (Relevant());

该代码在控制台中输入时可以工作,但不能作为 Greasemonkey 脚本工作。我尝试调整找到的解决方案 here (即使用 $(window).load (Relevant());),但我仍然遇到麻烦。这是我第一次尝试制作自己的用户脚本,因此非常感谢任何帮助。

最佳答案

正如@charlietfl所说,$(window).load (Relevant());立即调用Relevant,它应该更改为$(Relevant)

如果有效,请尝试以下操作:https://wiki.greasespot.net/Metadata_Block#.40run-at

如果这不起作用,请尝试使用setTimeout(Relevant,3000);

通常情况下,在控制台中工作的代码在greasemonkey中不起作用,因为greasemonkey脚本运行时可能无法渲染dom。

关于javascript - 我的 Greasemonkey 脚本在控制台中输入时有效,但在 Firefox 中尝试使用时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43443323/

相关文章:

javascript - 用于拦截按键的 Greasemonkey 脚本

javascript - for 循环中仅打开第三个帖子

javascript - 奇怪的CSS位置问题

html - 我想将类用于输入 type=submit

html - 如何为 iframe 加载标签添加 anchor ?

javascript - 每次将类添加到元素时,使用 waitForKeyElements 显示一条消息

php - 如何将 javascript 数据发送到 PHP?

javascript - Android 音乐流媒体

javascript - 如何删除div元素下方的空格

javascript - 在滚动条上连续减少 SVG 长度