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

javascript - Greasemonkey:如何删除随机 url 部分?

我需要从...更改这样的图像

https://www.website.com/images/stuff/95/jgfij/public/2019/09/cow.gif https://www.website.com/images/stuff/df3/4gy0/public/2015/03/horse.png https://www.website.com/images/stuff/odpk/f049/public/2020/08/dog.jpg

进入...

https://www.website.com/images/stuff/public/2019/09/cow.gif https://www.website.com/images/stuff/public/2015/03/horse.png https://www.website.com/images/stuff/public/2020/08/dog.jpg

我试过这个,但它不起作用

document.body.innerHTML = document.body.innerHTML.replace('https://www.website.com/images/stuff/*/public/,'https://www.website.com/images/stuff/public/');

我一直在尝试找到可以删除 url 某个部分之间的所有内容的东西,但我从来没有运气。

0 投票
0 回答
420 浏览

javascript - 油猴脚本不起作用与 youtube 的增强器工程

当我在 youtube 网站上尝试此代码时,我有点不安

它适用于 firefox 模块“YouTube 增强器”中的“自定义脚本”,但当我将其放入油脂猴脚本时不起作用。

知道我哪里错了吗?

我之前尝试过添加 windows.onload 或 document.onload 但没有任何效果。在这两个工作之前,我已经添加了一个警报。

0 投票
1 回答
25 浏览

firefox - 页面外输出

我正在尝试输出一些关于 DOM 树中节点属性的非常详细的摘要信息。几年前,我编写了一个浏览器扩展程序,它创建了一个新窗口并在那里编写了输出;该扩展不再与现代版本的 Firefox 兼容,因此我尝试将其移植到 Greasemonkey 脚本中,而不是编写一个全新的扩展。不幸的是,跨域脚本策略似乎阻止我向我创建的窗口实际写入任何内容。我有两个问题: 1. 有没有更好的方法可以为一个警告框输出过多的文本,从而可以复制部分或全部,而不需要修改原始页面的 DOM 树?2. 如果没有,我如何创建一个窗口并将文本从 Greasemonkey 脚本输出到它?

顺便说一句,我正在运行当前版本的 Greasemonkey。

0 投票
1 回答
180 浏览

javascript - 有没有办法找到代码在浏览器上创建动态弹出窗口的位置?

当我打开一个不是我开发的网站时,它会弹出一个 DIV 元素。如何找到创建该弹出窗口的代码?

我试图设置断点,但它只在第一次显示弹出窗口。

在此处输入图像描述

请注意这里的关键是

  1. 这是一个不是我开发的网站

  2. 弹出窗口是一个 DiV

  3. 弹出窗口只显示第一次。如果我刷新页面,它就消失了。

我不是要你为我调试网站,我想学习自己调试它的方法。

我所追求的是根据我设置的条件以编程方式设置断点。因此,如果有几种方法可以生成 DIV,那么我可以将这些方法添加到条件中以捕获所有方法。由于本机调试器具有中断 DOM 操作的能力,我希望我可以这样做,但以编程方式。也就是说,我可以通过在创建具有某些特征的 DIV 时指定条件来暂停执行。

理论上我认为这是可行的,如果只有调试器可以将其功能公开为API,我想有一种方法可以在满足某些条件时设置断点。就像下面这样附加条件的过程,如果目标元素具有某些特征,则中断。或者,如果代码块正在执行我指定的操作,请中断。

但似乎现实是 Web 浏览器上的调试工具是为 UI 用户而不是程序员服务的。我在这里可能非常错误。所以如果可以的话,请纠正我。

有没有人面临同样的挑战并做了什么?

似乎这已经完成并且有 API,但我仍然不确定如何使用它来做我想做的事。

https://developer.mozilla.org/en-US/docs/Tools/Debugger-API

我需要为此目的创建一个附加组件吗?

或者 GreaseMonkey 可能足以完成这个任务?

似乎与 Firefox 调试 API 相关的文档已过时,暂存器已禁用。我不可能通过教程来学习调试器 API

https://developer.mozilla.org/en-US/docs/Tools/Debugger-API/Tutorial-Breakpoint

0 投票
2 回答
444 浏览

greasemonkey-4 - Greasemonkey Get and Set Value 不工作并且没有错误地杀死脚本

我正在尝试存储一些值,这些值将在 Greasemonkey 中通过页面加载和浏览器关闭持续存在。我的代码如下:

如您所见,我正在测试持久存储,但它并没有给我预期的结果。当我检查控制台时,我可以看到 id 并且 id 的类型是字符串(GM.setValue 需要)。在它尝试设置值的下一行,它停止执行 JS 并且没有其他行运行。没有错误被抛出。它只是死了。

当我在那里没有 setvalue 而只有 getvalue 时也是一样的(如果之前没有设置它应该返回 null )。我究竟做错了什么?这是 Greasemonkey > 4.0 所以这应该是正确的语法,但没有任何错误或反馈,我被卡住了。

0 投票
1 回答
102 浏览

javascript - 在 Greasemonkey 脚本中扩展 EventTarget 类时自定义事件 addEventListener 不起作用

此脚本在粘贴到 FireFox 下的开发人员控制台时有效,但在作为 Greasemonkey 脚本运行时无效,我不完全确定原因。没有关于“extends EventTarget”和“dispatchEvent”的文档或大量讨论。但似乎我无法收听自定义事件。知道为什么或如何解决它吗?

在 GM 4.3 中运行时,构造函数运行,它调度事件但不接收它。在控制台上,它完成了所有三件事。

0 投票
1 回答
63 浏览

javascript - 如何通过 GM 用户脚本登录 neopets.com

我创建了一个从 Neopets登录页面开始并自动填充用户名和密码的用户脚本。我无法让脚本单击巨大的绿色“登录”按钮。

我已经尝试了以下所有方法来单击登录按钮或提交表单。

我知道没有名为“welcomeLoginButton”的元素,只有一个名为.welcomeLoginButton. 填写用户名和密码后,如何让表单自行提交?

0 投票
1 回答
53 浏览

tampermonkey - 有没有办法在 Tampermonkey 上加载所需资源时捕获错误?

我有一个带有@require 注释的tampermonkey 脚本,该脚本为我提供了某些工具,以便脚本以特定方式工作。

然而,有时这个库不可用(它落后于登录,所以如果没有找到会话,@require 会返回一个带有“未经授权”解释的纯 html)。

我的目标是能够捕获资源是否已成功加载,并且如果它没有提供已处理的错误,我无法做到 - 我只是收到浏览器关于接收 < 符号的投诉出乎意料(因为@require 产生的纯html)。

您对如何解决这个问题有任何想法吗?我检查了 Tampermonkey 文档,但无济于事。

提前致谢

0 投票
0 回答
414 浏览

javascript - 在 Chrome 扩展全局对象中注入脚本并篡改影子 DOM

警告:可能涉及一组编程不良做法以绕过安全功能。

我们正在开发一组脚本,用于从某个网站提取公共信息。我使用ViolentMonkey在网站中注入脚本,该网站使用 Google 的reCAPTCHA(参见示例)。

为了绕过它,我安装了Buster: Captcha Solver,这是一个非常简洁的扩展程序,它在 reCAPTCHA 帧上放置一个图标,点击后,它会切换到音频解析模式并尝试转录音频。它会在所有其他尝试中失败,但它非常有帮助。

问题是:Buster 检测到 reCAPTCHA 已加载 - 似乎没有足够的理由要求用户点击。我不会说它违背了目的,但我宁愿让它自动运行。我什至注入了一个预点击,它会弹出 reCAPTCHA 模式(的,它可以工作),但我不能强制点击 Buster 的图标,因为它被封闭在一个封闭的影子 DOM中。

Buster 基本上使用shadowRoot.appendChild(),所以我尝试设置@run-at document-start和篡改HTMLElement.prototype.attachShadow

从理论上讲,这会使shadowRoot.appendChild()子节点直接附加到节点本身,但不管怎样,Buster 仍然能够附加影子 DOM。我相信覆盖HTMLElement.prototype仅适用于当前的全局范围,并且 Buster 在其自己的扩展环境中被沙盒化。如果它起作用了,这样的事情很可能是可能的:

我想编译一个修改版的Buster 源代码,我只是在其中使用.attachShadow({mode: 'open'}),以便我的脚本最终可以访问它的按钮,但现在这太麻烦了。我也可以但不想为此使用 Chrome 之外的工具(如 AutoHotkey)。

TL;博士

如何使用 ViolentMonkey/TamperMonkey 以编程方式单击封闭阴影 DOM 内的元素?

0 投票
1 回答
62 浏览

windows - GreaseMonkey 上的徽章图标

我在 Windows 10 上最新版本的 Firefox 上使用 GreaseMonkey,我想知道是否有办法在启用 Greasemonkey 并且您访问网站时显示该选项卡的活动脚本的徽章图标。

问候,乔治