Greasemonkey函数在我的脚本中不起作用

Greasemonkey functions don't work in my script?

本文关键字:不起作用 脚本 我的 函数 Greasemonkey      更新时间:2023-09-26

我不能让我的Greasemonkey脚本工作…

GM_registerMenuCommand("What's My IP Address?", function(){
GM_xmlhttpRequest({
    method: "GET",
    url: "http://tools.ip2location.com/ib2",
    onerror: function(oEvent){ alert("Error " + oEvent.target.status + " occurred while receiving the document."); },
    onload: function(response){
        if (response.readyState !== 4 || response.status !== 200) return;
        // we can parse now
        var myregexp = /<a[^>]*>(['s'S]*?(?:Your IP Address)['s'S]*?)<'/a>/i;
        var match = myregexp.exec(response.responseText);
        if (match != null) {
            // got match
            subject = match[1];
            // format first line
            subject_2 = subject.replace(/<br><b>/mg, " ");
            // remove html
            subject_3 = subject_2.replace(/<'/?[a-z][a-z0-9]*[^<>]*>|<!--['s'S]*?-->/ig, "");
            // now remove whitespaces
            result = subject_3.replace(/^[ 's]*/mg, "");
        } else {
            // no match, error
            result = "I couldn't find your IP Address :(";
        }
        alert(result);
    }
});
});
(function(){
})();


GM_registerMenuCommand没有任何变化

我可以抛出一个警报,这样我就知道脚本正在运行,但是我如何运行GM_registerMenuCommand ?

从2.0版本开始,Greasemonkey现在默认为@grant none

您必须显式地将@grant GM_xmlhttpRequest添加到userscript元数据块中,否则GM_xmlhttpRequest将无法用于您的userscript。

// ==UserScript==
[...]
// @grant GM_registerMenuCommand
// @grant GM_xmlhttpRequest
// ==/UserScript==