问题标签 [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.
javascript - YouTube - 右键单击时不显示上下文菜单
想法:通过在视频播放器上用右键拖放来寻找 YouTube 视频(例如,每 2% 的屏幕宽度需要 1 秒)。所以在一个 1920x1080 的屏幕上,如果我按下鼠标右键,向左拖动 384 像素(20%)然后松开,视频应该快退 10 秒。
我有一个 GreaseMonkey 脚本,它几乎可以满足我的需求,但是当我释放按钮时,上下文菜单仍然会弹出。这不是默认的上下文菜单,而是 YouTube 的自定义上下文菜单,它可能以某种方式绑定到 mouseup 事件。我想摆脱这个菜单,我也想阻止默认上下文菜单打开。
有没有办法可以更改鼠标事件的默认操作?我想保留所有其他操作(左键单击、键盘操作等)。我还没有找到一种方法来删除特定事件的元素上的事件处理程序。
javascript - 在greasemonkey脚本中打印“事件”对象会静默终止执行,如何查看“事件”?
这是我的脚本(故意简化):
当这个脚本被加载到我的页面(堆栈溢出)时,我看到“我在“e”之前打印到控制台,但我没有看到“e”或“我在“e”之后打印' 登录。为什么是这样?
我试过添加类似的东西e.preventDefault()
,但这没有任何区别。
令人费解的是,事件监听器内部的这种东西仍然有效:
所以e
定义了对象(只需按任意键,然后按“向上”)。有任何想法吗?
编辑:第二部分似乎我错了,(虽然我很确定我看到它在另一个网站上工作......)
浏览器 = firefox 63.0.3(64 位)
操作系统 = Ubuntu 18.04
油脂猴 = 4.7
javascript - 通过 Greasemonkey 删除特定网站内容
我知道类似的问题已经被问过无数次了,我已经阅读了一段时间,但我似乎无法让它适用于我的案例,我已经阅读了以下内容并尝试应用这些解决方案就我而言,全部来自 Stack Overflow,但我没有成功,所以我很感激帮助。
我想从 Animenewsnetwork.com 网站的侧边栏中删除“本周动漫”文章,我想删除的代码示例是:
我想完全删除它,我试过了,我认为是搜索字符串 "this-week-in-anime" 然后删除或隐藏它的 parent ,但我从来没有让它工作。
我试过这样的事情:
和
和
编辑:脚本的最终形式和其他地方收到的建议。
需要考虑的一些事项:
将你的东西封装在一个函数中。这可以防止您声明可以从页面本身访问的内容。
"use strict";
因为函数中的第一行修复了一些您可能无法立即发现的 JS 烦恼。例如,变量名中的拼写错误。尽量避免使用
@require
. 如果该资源无法交付,这可能会长时间阻止页面加载如果要删除元素,
@run-at document-idle
这是一个好的开始,因为它确保“加载”事件已触发如果您要删除的元素是稍后动态加载的,请使用 a
setInterval
或更好的MutationObserver
尽量避免使用 jQuery。到目前为止,它的大部分功能都可以在常规 JS 中使用。
在我的示例中,我完全删除了节点。如果你不想这样,你可以使用
node.style.display='none'
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?
javascript - 来自@require'd 脚本的@grant GM 函数
我正在编写一系列 Greasemonkey 脚本。这些脚本共享它们的大部分功能,因此我认为提取共同特征很有用。
Incommon.js
是共同特征,它们调用 GM_functions(例如GM.xmlHttpRequest
)。每个用户脚本@require [...]/common.js
有没有办法避免在每个中重复所有元数据script.user.js
:
?
我试图进入@grant
(common.js
或通过调用它common.user.js
),但似乎 Greasemonkey 无论如何都忽略了它。
我知道这可以被认为是一个安全漏洞,因为由于@require 的级联@grants,您可能不知道最终授予了哪些权限。然而,Greasemonkey 可以从所有 @required 脚本中逻辑推断出最终权限。
我有同样的问题@resource
。
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,我想这是由于相同的原因。
firefox - 有人对 Greasemonkey @includes 有问题吗?
我编写 Greasemonkey 脚本来为我的工作进行各种自动化和屏幕抓取。我有一个要处理的项目/帐户列表,我通过它们从各种网络工具中提取数据进行了迭代。
我捕获文档就绪事件并从那里开始我的处理,当我完成后,我将按顺序加载下一页,window.href
或者点击下一页的链接。
页面加载时,Greasemonkey 时不时地不运行。控制台中没有错误,如果我只是刷新页面,它就可以工作。这就像@include
指令失败了。我会说 URL 正在更改,但事实并非如此,并且页面刷新启动脚本就好了(尽管我不得不停止我正在做的事情并按 F5)。
有人见过这个吗?有什么我可以做的(除了切换到 Selenium)吗?
jquery - 通过提供搜索字符串在页面上查找 URL
我正在学习在 Firefox 上使用 Greasemonkey。
在 Google 搜索结果页面上,我试图找到一个链接并单击它。
我给了搜索查询“cookie cut”。. 在结果中,有一个我试图查找并单击的 url merriam-webster.com的结果。
这是我到目前为止所写的。
然而,谷歌搜索似乎像这样打乱了网址:
在这种情况下,我如何找到 merriam-webster.com 并点击它的 href 部分?
javascript - 从 localStorage 接收数据
我一直在处理涉及 GM_getvalue 和 GM_setValue 的代码。我想通过 ajax 访问我的服务器中的数据。
我一直在处理涉及 GM_getvalue 和 GM_setValue 的代码。存储的数据可以在位于 Tampermonkey>Dashboard>Script>Storage 的 Storage 中找到。但是,它只能在一台 PC 上看到。我想访问我的网站/服务器中的数据。是否有任何建议和代码使其成为可能?也许是阿贾克斯?
我希望代码可以帮助我通过我的网站/服务器获取这些数据。帮助 :(