问题标签 [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 回答
160 浏览

tampermonkey - Greasemonkey 抛出“DOMException:操作不安全。” 关于 document.implementation.createHTMLDocument().open()

法拉盛 84.0.2,通用汽车 4.10.0

代码可以在GitLab上看到。相关部分是:

控制台输出:

脚本适用于 Tampermonkey。

0 投票
1 回答
61 浏览

firefox - 新标签页上的greasemonkey开始刷新功能

我有一个旧的greasemonkey 脚本,用于开始刷新新标签页上的页面:

我不能让它工作了,我假设自从 firefox 57+ 一些功能已经改变,是否可以修复/调试这个,以便它再次工作?

相关的 html 我试图在上面运行它:

当我尝试通过 firefox 控制台运行它时,它确实找到了文本并在新选项卡中打开了链接,我只是无法让它刷新并使用greasemonkey 重复该过程

0 投票
0 回答
257 浏览

javascript - 来自 @require 的 Tampermonkey 全局,带或不带 unsafeWindow

我正在尝试通过@require 功能使tampermonkey 脚本可用于其他tampermonkey 脚本,这很好,但我也想在脚本中公开使用它的脚本所需的函数。我试过这个:

脚本为@required:

但即使在消费者脚本中启用了 unsafeWindow,我似乎仍然无法通过unsafeWindow.functionName(), nor访问该功能window.functionName()

显然,如果可能的话,我想避免使用 unsafeWindow ,但目前我无论如何都无法让它工作。

我的替代解决方案是让脚本成为 @required 脚本侦听窗口事件.. 像这样:

使用 @required 脚本的脚本:

然后在 @require'd 脚本中有一个 switch 语句或其他内容,以根据该自定义事件执行。

这会是一个适当的解决方案吗?有更好的选择吗?

0 投票
1 回答
99 浏览

javascript - 如何与使用 GM_openInTab 打开的选项卡的元素进行交互

我正在我的 tampermonkey 脚本中使用 GM_openInTab 打开一个新选项卡,但我无法使用我的代码与这个新选项卡的元素进行交互。

我只想在新打开的选项卡中单击一个按钮,然后立即关闭它。

提前致谢!

0 投票
0 回答
54 浏览

javascript - 使用 Greasemonkey 覆盖匿名函数

我正在尝试使用 Greasemonkey 将此代码更改为不使用“世界”,而是使用 window.location.href 以便在选择下拉选项时,它保持在同一页面上,但只是更改了 suid。

页面代码:

我的尝试:

我也试过用这个:

功能

这些似乎都不适合我。谁能告诉我问题是什么?

0 投票
0 回答
34 浏览

javascript - 使用javascript自动提交表单仍然需要交互才能完成

我为 Greasemonkey/Tampermonkey 编写了一个供个人使用的用户脚本,它应该自动登录某些页面。为此,它会查找提交按钮并事先检查是否已插入凭据。到目前为止,这有效。但是,脚本会时不时地停止,仅当在浏览器中执行单击或击键时才会继续运行。我首先想到了某种安全功能,但这并不能完全解释为什么它有时会起作用。我该如何解决?由于它可能是浏览器问题,我正在使用 Vivaldi (Chromium) 和 Tampermonkey。

0 投票
2 回答
222 浏览

javascript - 在 GreaseMonkey/TamperMonkey 上使用 JavaScript 将箭头键重新映射到另一个键

我正在尝试设置一个 TamperMonkey 脚本来将密钥重新分配Right ArrowF密钥。

我尝试了这段代码,但到目前为止,当我按下 时没有任何反应F

有人可以启发我吗?

0 投票
0 回答
43 浏览

javascript - 等到节点可用而不使用间隔或固定重试时间

有没有更聪明的解决方案来等待节点存在而不使用间隔或固定重试时间?

目前,我这样做:

困扰我的是它总是盲目地等待。如果时间太短,它会不必要地消耗资源,如果时间太长,它对变化的反应太慢。如果节点从不存在,它会在后台不必要地消耗资源。

可能突变观察者将是一个解决方案。但对我来说似乎也不是很光滑,特别是如果我经常需要这个。或者我需要某种(工厂)函数来构建突变观察者。

编辑:

在我的用例中,变异观察者的主要问题是脚本的可重用性和准确性。因为尚不存在的节点无法被观察到。因此,您必须转到确保它们立即存在的更高节点。但随后观察者也会对不重要的变化做出反应。根据用例,这些可能很多。因此,最终您可能比间隔时间节省的资源更少。

0 投票
3 回答
227 浏览

javascript - 使用 Javascript,每 30 秒刷新一次页面,除非出现短语

现有代码

我在 ViolentMonkey(或 GreaseKit 或 TamperMonkey)中使用以下代码每 30 秒刷新一次页面:

我可以让它停下来吗?

这多年来一直运行良好。但是现在,如果存在以下短语,我希望我的代码不刷新页面:Important shizzle

(我不希望它在这种情况下刷新的原因是因为那样我将不再能够看到写入的内容。)

我没有开悟

我几乎不知道 Javascript。我在 YouTube 上看过教程,尝试学习基础知识。我经常用谷歌搜索小问题并在 Stackoverflow 上找到答案(谢谢)——但我还是很慢


战略思路

  1. 搜索短语Important shizzle- 如果存在,则结束脚本。
  2. 然后我只需要我现有的代码:setTimeout(function(){ location.reload(); }, 30*1000);

唉,我找不到一个优雅的 Javascript 命令来突然结束脚本。

这行得通吗?

问题是上面不是每30秒做一次,它只是做一次

0 投票
0 回答
80 浏览

javascript - 如何仅删除 a 的某个部分并使其可切换?

我对用户脚本非常陌生,我正在尝试从视频查看器中删除时间线和总时间显示。这是一个付费网站(kayo),所以我无法链接到实际的示例页面。

检查工具中的总时间显示如下:

我只想删除或隐藏“7:29:05”部分,这对于每个视频来说显然是不同的。此外,我认为每个视频的“ehsbih-1 krLYIr”部分都会有所不同。

我已经能够<span>通过这样做删除整个:

,但我不确定如何仅针对代码的时间部分来删除它,或者让它忽略“ehsbih-1”部分,因为我认为这会因不同的视频而改变。我宁愿不删除整个<span>,因为我希望能够看到经过的时间(“5:47”部分)。经过的时间每秒更新一次,我认为它是由 javascript 更新的。

另外,有什么办法可以让我可以在用户脚本中打开和关闭删除/隐藏?因为似乎当我删除某些东西时,如果我想随后将它带回来,我必须禁用用户脚本并重新加载页面(waitForKeyElements到目前为止我只尝试过使用)来删除 div 类)。我希望能够重新启用事物而不必重新加载整个页面(并从头开始播放视频)。

我在 Firefox 上使用 Tampermonkey。