标签: tampermonkey

即使网站离线,如何保持我的用户脚本正常工作?

我想制作一个用户脚本(现在我只担心 Chrome 兼容性)每 30 秒重新加载一次页面(我的意思是,这不是重点,我只是想在互联网离线时以某种方式执行一些脚本),以防万一互联网出现故障,用户无法看到它。

现在的问题是,一旦互联网出现故障,页面将被重定向到“此网页不可用”,并且所有用户脚本都会停止工作。

我已经尝试添加@include *元数据,希望这将使用户脚本能够在所述页面上工作,但是我没有成功。

javascript greasemonkey google-chrome userscripts tampermonkey

5
推荐指数
1
解决办法
1683
查看次数

如何在打字稿中“返回”外部函数定义

  1. 我需要在打字稿上重写我的tampermonkey 脚本。

  2. 在打字稿上重写此 javascript 的正确方法是什么?

    if (window.top != window.self ) {
        return;
    }
    
    Run Code Online (Sandbox Code Playgroud)

主要目标是如果脚本不在 window.top 中运行,则停止执行脚本。

Typescript 编译器写入错误 TS1108:“return”语句只能在函数体内使用。

javascript userscripts typescript tampermonkey

5
推荐指数
1
解决办法
1万
查看次数

Console.log 在 Tampermonkey 的 setInterval 内不起作用

setInterval()在典型的脚本中使用了很多次,但没有在用户脚本中使用过。出于某种原因,console.log()不起作用,但仅在 setInterval 内。但是,警报正在起作用。有任何想法吗..?我不应该使用 console.log 吗?

澄清一下,第一个console.log("Started!");实际上是打印开始的。

(function() {
    console.log("Started!");
    setInterval(function(){ findAndReplace();}, 3000);
})();

function findAndReplace() {
    alert("hi");
    console.log("Hey");
} 
Run Code Online (Sandbox Code Playgroud)

javascript setinterval tampermonkey

5
推荐指数
1
解决办法
6332
查看次数

在 chrome://settings 和类似的 url 上运行用户脚本

chrome://history/为什么 tampermonkey 对或 之类的网址不起作用chrome://settings/?有什么方法可以在此页面上运行用户脚本吗?

greasemonkey userscripts tampermonkey

5
推荐指数
1
解决办法
727
查看次数

Tampermonkey 脚本仅在页面刷新后起作用

基本上,当我进入 YouTube 页面时,tampermonkey 会说脚本正在运行,但事实并非如此。刷新页面后,它工作正常。

我发现了一些其他有类似问题的帖子,他们使用了 waitForKeyElements。然而,我不完全理解它是如何工作的,也无法自己让它工作。

我正在制作的脚本可以在这里找到

我尝试用函数包围一切

betterYoutubeScrolling()
{ 
  // code 
}
Run Code Online (Sandbox Code Playgroud)

并添加

waitForKeyElements ("#movie_player", betterYoutubeScrolling); 
Run Code Online (Sandbox Code Playgroud)

到开始。执行此操作后,我在控制台中收到以下错误。

“ReferenceError:waitForKeyElements 未定义”

我找不到有关 waitForKeyElements 的任何其他信息或解决问题的任何其他方法,因此感谢任何帮助。

javascript youtube jquery tampermonkey

5
推荐指数
1
解决办法
2732
查看次数

如何使 TamperMonkey 脚本在 chrome-extension:// 页面上运行

所以这看起来应该很简单,但我在谷歌上找不到它。我有一个从 Chrome 扩展商店下载的 Google Chrome 扩展程序,我正在尝试稍微调整它在 chrome-extension:// 页面上显示某些内容的方式。TamperMonkey 通常在 http:// 页面上非常适合此操作,但我似乎无法让我的脚本为 chrome-extension:// 页面激活。有谁知道如何做到这一点?

javascript google-chrome google-chrome-extension tampermonkey

5
推荐指数
0
解决办法
1464
查看次数

从 Javascript/Tampermonkey/Greasemonkey 发送通知电子邮件(无服务器)

我需要从前端发送通知。通知将使用 Tampermonkey Chrome 扩展程序监控来自网站的分析数据。

这可能吗?

javascript email greasemonkey tampermonkey

5
推荐指数
0
解决办法
2471
查看次数

如何使用 Tampermonkey 覆盖站点的变量?

我正在尝试覆盖网站 ( ) 设置的功能window.jsl.dh。这是声明:

\n
window.jsl = window.jsl || {};\nwindow.jsl.dh = window.jsl.dh || function(i, c, d) { blabla }\n
Run Code Online (Sandbox Code Playgroud)\n

我想分配dh一个无用的函数,但在敲了我的头一段时间后,我不知道什么是真实的了。我尝试过创建一个假的dh()and Object.freeze(window.jsl),使用代理,添加设置器,为我的笔记本电脑加油......没有运气。 \n无论我做什么,那段代码似乎都可以不受阻碍地运行,并且dh()函数总是被分配并运行而无需问题。

\n

这是代码:

\n
  window.jsl = window.jsl || {};\n  window.jsl.dh = function () {\n    console.log('Called the dud');\n  };\n  Object.freeze(window.jsl);\n
Run Code Online (Sandbox Code Playgroud)\n

如果我在TM脚本运行之后、站点声明之前设置断点,并在控制台中手动输入相同的代码,它就会起作用。

\n

认为这可能是一个沙箱问题,我弄乱了@grant阳光下的每个脚本注入方法 \xe2\x80\x94also 与@run-at.

\n

不明白为什么它不能单独工作,我已经没有想法了。

\n

javascript google-chrome google-chrome-devtools tampermonkey

5
推荐指数
1
解决办法
1610
查看次数

tampermonkey 脚本加载本地文件

我使用 HTML、CSS 和 JS 创建了一个工具。我希望可以通过 TamperMonkey 访问该工具。我发现了一个 TamperMonkey 脚本,其中创建者没有将其代码直接添加到脚本中,而是利用 @require 行来链接他的 Web 托管代码文件。

我正在尝试重现此内容,但我不想添加 https 链接,而是想从本地文件开始。

这是他的代码(匿名):

// ==UserScript==
// @name         name
// @version      version
// @author       author
// @description  description
// @match        URL where the tool will be used
// @require      https://hiscodelink1.js?raw=1
// @require      https://hiscodelink2.js?raw=1
// @require      https://hiscodelink3.class.js?raw=1

// ==/UserScript==
// See https://hiscodelink1.js?raw=1
Run Code Online (Sandbox Code Playgroud)

这是我的(匿名):

// ==UserScript==
// @name         name
// @version      version
// @author       author
// @description  description
// @match        URL where the tool will be used (using the …
Run Code Online (Sandbox Code Playgroud)

tampermonkey

5
推荐指数
1
解决办法
1万
查看次数

如何使 setInterval 在后台选项卡中正常工作

我正在使用 setInterval(在 3 个 Tampermonkey 脚本内)每隔几秒检查三个不同的公共网站,这样当特定文本出现时我就可以收到警报。这些警报适用于自由职业机会,可能会在几秒钟内到期,所以我必须快点。

一切正常,除了当我在不同的选项卡或应用程序中工作时,大约 6 分钟后,setInterval 开始每分钟“触发”一次后台选项卡,而不是每隔几秒一次。

有什么建议如何解决这个问题吗?是否可以以某种方式使用 Date.now() ?请注意,我是一个完全的初学者,愿意学习,但需要使事情尽可能简单。

我尝试使用 window.location.reload() 每 3 分钟重新加载一次页面,但这不起作用。我想我可以创建一个脚本来每隔几分钟激活并聚焦该选项卡,但这会中断我正在处理的任何事情。我使用以下准系统脚本针对https://www.google.co.uk/进行了测试,以防脚本中的其他内容导致问题,但也会发生同样的情况:

var i = 0;
setInterval(function() {
    console.log("log: i:" + i);
    i = i+1;
    if(i==15) {
        i = 0;
        window.location.reload();
        console.log("reloaded window");
    }

}, 10000);
Run Code Online (Sandbox Code Playgroud)

几分钟后,即使在窗口重新加载之后,i 每分钟仅增加一次。

我看过这个问题

它提到了“工人”,但是这些可以在我不拥有的公共网站上的 tampermonkey 中使用吗?它还提供了一个链接,建议一种播放几乎听不见的音频文件的解决方法 - 但我不知道在我的 tampermonkey 脚本中播放该文件是否有效?

我看到这里有很多解决方法,但我不确定是否可以使用其中任何一个。

例如,可以在篡改猴中使用 MutationObserver 来检测公共网站的更改吗?即使可以,大概我每次需要检查时都必须重新加载网页?目前我正在使用 XMLHttpRequest 而不是加载网页(速度更快并且使用更少的 CPU)。

有趣的是,上面的链接似乎表明 setInterval 和 SetTimeout 是专门针对限制的,我想知道这是否意味着我可以使用其他函数来代替。

我也见过这个,但我想我只能将其用于我拥有的网站?

javascript greasemonkey tampermonkey

5
推荐指数
1
解决办法
1172
查看次数