[英]How do I make a JavaScript script run every time a specific page loads. Browser: Edge (I'm using tampermonkey)
好的,标题可能有点令人困惑,但我的目标是使用 tampermonkey,制作一个声明 function 的用户脚本,我可以在每次加载页面(不和谐)时在控制台中使用它。 这是我的用户脚本的样子:
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://discord.com/channels/@me
// @grant none
// ==/UserScript==
(function() {
'use strict';
function alert1() {
alert();
}
})();
为了再次澄清,我想将上面的代码放入用户脚本中。 我希望能够调用alert1();
从控制台。
将channels/@me
替换为@match
中的*
,使其变为https://discord.com/*
这是必要的,因为 discord 是现代 SPA(单页应用程序),它使用history.pushState
API 模拟导航,因此如果您先打开主页然后导航到您的频道,则不会出现页面加载事件,这意味着用户脚本不会在 URL 的此类更改上运行。
因此,以前,您的用户脚本没有在初始页面上运行,之后也从未运行过。
现在它在初始页面上只运行一次,无论它是否是您的频道。
通过将 function 分配给window
的属性来公开它
移除外部 function 包装, 更多信息。
这是// ==/UserScript==
之后的完整代码
'use strict';
window.alert1 = function alert1() {
alert('foo');
}
如果要公开多个函数,请使用简写声明以避免代码重复:
Object.assign(window, {
foo() {
alert('foo');
},
bar() {
alert('bar');
},
});
如果您想像@grant
一样使用GM_setValue
,请将上述代码中的window
替换为unsafeWindow
。
如果您想在 URL 匹配某些内容(例如您的频道)时运行代码,请参阅此答案。
在 Greasemonkey/Firemonkey 中,您还必须使用exportFunction
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.