问题标签 [greasemonkey-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1066 浏览

javascript - YouTube - 右键单击​​时不显示上下文菜单

想法:通过在视频播放器上用右键拖放来寻找 YouTube 视频(例如,每 2% 的屏幕宽度需要 1 秒)。所以在一个 1920x1080 的屏幕上,如果我按下鼠标右键,向左拖动 384 像素(20%)然后松开,视频应该快退 10 秒。

我有一个 GreaseMonkey 脚本,它几乎可以满足我的需求,但是当我释放按钮时,上下文菜单仍然会弹出。这不是默认的上下文菜单,而是 YouTube 的自定义上下文菜单,它可能以某种方式绑定到 mouseup 事件。我想摆脱这个菜单,我也想阻止默认上下文菜单打开。

有没有办法可以更改鼠标事件的默认操作?我想保留所有其他操作(左键单击、键盘操作等)。我还没有找到一种方法来删除特定事件的元素上的事件处理程序。

0 投票
1 回答
192 浏览

javascript - 在greasemonkey脚本中打印“事件”对象会静默终止执行,如何查看“事件”?

这是我的脚本(故意简化):

当这个脚本被加载到我的页面(堆栈溢出)时,我看到“我在“e”之前打印到控制台,但我没有看到“e”或“我在“e”之后打印' 登录。为什么是这样?

我试过添加类似的东西e.preventDefault(),但这没有任何区别。

令人费解的是,事件监听器内部的这种东西仍然有效:

所以e定义了对象(只需按任意键,然后按“向上”)。有任何想法吗?

编辑:第二部分似乎我错了,(虽然我很确定我看到它在另一个网站上工作......)

浏览器 = firefox 63.0.3(64 位)

操作系统 = Ubuntu 18.04

油脂猴 = 4.7

0 投票
1 回答
107 浏览

javascript - 通过 Greasemonkey 删除特定网站内容

我知道类似的问题已经被问过无数次了,我已经阅读了一段时间,但我似乎无法让它适用于我的案例,我已经阅读了以下内容并尝试应用这些解决方案就我而言,全部来自 Stack Overflow,但我没有成功,所以我很感激帮助。

第 1 条 第 2 条 第 3 条 第 4 条 第 5 条

我想从 Animenewsnetwork.com 网站的侧边栏中删除“本周动漫”文章,我想删除的代码示例是:

我想完全删除它,我试过了,我认为是搜索字符串 "this-week-in-anime" 然后删除或隐藏它的 parent ,但我从来没有让它工作。

我试过这样的事情:


编辑:脚本的最终形式和其他地方收到的建议。

需要考虑的一些事项:

将你的东西封装在一个函数中。这可以防止您声明可以从页面本身访问的内容。

"use strict";因为函数中的第一行修复了一些您可能无法立即发现的 JS 烦恼。例如,变量名中的拼写错误。

尽量避免使用@require. 如果该资源无法交付,这可能会长时间阻止页面加载

如果要删除元素,@run-at document-idle这是一个好的开始,因为它确保“加载”事件已触发

如果您要删除的元素是稍后动态加载的,请使用 asetInterval或更好的MutationObserver

尽量避免使用 jQuery。到目前为止,它的大部分功能都可以在常规 JS 中使用。

在我的示例中,我完全删除了节点。如果你不想这样,你可以使用node.style.display='none'

0 投票
1 回答
2093 浏览

google-chrome - Syntax differences between Tampermonkey and Greasemonkey?

I've been trying to transfer a lot of my Tampermonkey (in Google Chrome) userscripts to Greasemonkey in FireFox. Unfortunately, it seems that they don't work properly when I transfer them into Greasemonkey - I'm assuming there are syntactical differences, but I'm not sure what they are, nor have I found great information regarding the differences.

This code for instance:

This works in Tampermonkey on Chrome but not in Greasemonkey. What differences lie between the two, and how can I get this to work in FireFox?

0 投票
1 回答
462 浏览

javascript - 来自@require'd 脚本的@grant GM 函数

我正在编写一系列 Greasemonkey 脚本。这些脚本共享它们的大部分功能,因此我认为提取共同特征很有用。

Incommon.js是共同特征,它们调用 GM_functions(例如GM.xmlHttpRequest)。每个用户脚本@require [...]/common.js

有没有办法避免在每个中重复所有元数据script.user.js

?

我试图进入@grantcommon.js或通过调用它common.user.js),但似乎 Greasemonkey 无论如何都忽略了它。

我知道这可以被认为是一个安全漏洞,因为由于@require 的级联@grants,您可能不知道最终授予了哪些权限。然而,Greasemonkey 可以从所有 @required 脚本中逻辑推断出最终权限。

我有同样的问题@resource

0 投票
2 回答
417 浏览

javascript - GM.xmlHttpRequest : 无法理解 URL

我想为 stackoverflow 尝试ACQUA 用户脚本,但出现错误:

我认为它是“acqua.kmi.open.ac.uk”,有很多子域。我该如何解决?

用户脚本代码:

0 投票
1 回答
298 浏览

javascript - Firefox 不尊重 Greasemonkey 脚本中的 Object.defineProperty()?

我正在编写一个用户脚本来防止网站设置document.body.innerHTML,这是网站检测广告拦截的典型标志:

上面的用户脚本适用于 Chrome+Tampermonkey。但它在 Firefox+Greasemonkey-4 上的行为很奇怪。

控制台中的输出是:

Loading ...
测试设置 document.body ...
检测到恶意活动
不要试图欺骗我的广告拦截!

所以用户脚本加载成功,设置器也成功挂钩。但是在加载后我在控制台中尝试:

它只是设置innerHTML不抛出错误,就好像尚未安装挂钩一样。我已经尝试了所有@run-at选项,但它们都不起作用。


OTAH,如果我Object.defineProperty()在控制台中使用,那么它可以按预期工作。因此我得出结论,Firefox 不尊重Object.defineProperty()用户脚本。

您也可以尝试访问此网站:https ://connectwww.com 。在 Chrome 中的 Tampermonkey 中安装上述用户脚本后,网站上的 adblock-detection 被成功拦截。但是用户脚本在 Firefox+Greasemonkey 上不起作用。

为什么 Firefox尊重Object.defineProperty()用户脚本?有什么解决方法吗?

旁注:

一些著名的用户脚本如 anti-adblock-killer 也适用于上述测试网站的 Chrome 但不适用于 Firefox,我想这是由于相同的原因。

0 投票
0 回答
146 浏览

firefox - 有人对 Greasemonkey @includes 有问题吗?

我编写 Greasemonkey 脚本来为我的工作进行各种自动化和屏幕抓取。我有一个要处理的项目/帐户列表,我通过它们从各种网络工具中提取数据进行了迭代。

我捕获文档就绪事件并从那里开始我的处理,当我完成后,我将按顺序加载下一页,window.href或者点击下一页的链接。

页面加载时,Greasemonkey 时不时地不运行。控制台中没有错误,如果我只是刷新页面,它就可以工作。这就像@include指令失败了。我会说 URL 正在更改,但事实并非如此,并且页面刷新启动脚本就好了(尽管我不得不停止我正在做的事情并按 F5)。

有人见过这个吗?有什么我可以做的(除了切换到 Selenium)吗?

0 投票
1 回答
139 浏览

jquery - 通过提供搜索字符串在页面上查找 URL

我正在学习在 Firefox 上使用 Greasemonkey。

在 Google 搜索结果页面上,我试图找到一个链接并单击它。

我给了搜索查询“cookie cut”。. 在结果中,有一个我试图查找并单击的 url merriam-webster.com的结果。

这是我到目前为止所写的。

然而,谷歌搜索似乎像这样打乱了网址:

在这种情况下,我如何找到 merriam-webster.com 并点击它的 href 部分?

0 投票
1 回答
142 浏览

javascript - 从 localStorage 接收数据

我一直在处理涉及 GM_getvalue 和 GM_setValue 的代码。我想通过 ajax 访问我的服务器中的数据。

我一直在处理涉及 GM_getvalue 和 GM_setValue 的代码。存储的数据可以在位于 Tampermonkey>Dashboard>Script>Storage 的 Storage 中找到。但是,它只能在一台 PC 上看到。我想访问我的网站/服务器中的数据。是否有任何建议和代码使其成为可能?也许是阿贾克斯?

我希望代码可以帮助我通过我的网站/服务器获取这些数据。帮助 :(