[英]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.