Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Greasemonkey函数不';在我的剧本里不行吗?_Javascript_Greasemonkey - Fatal编程技术网

Javascript Greasemonkey函数不';在我的剧本里不行吗?

Javascript Greasemonkey函数不';在我的剧本里不行吗?,javascript,greasemonkey,Javascript,Greasemonkey,我无法让我的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

我无法让我的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_registermenu命令(“我的IP地址是什么?”,函数(){
GMxmlHttpRequest({
方法:“获取”,
url:“http://tools.ip2location.com/ib2",
onerror:function(oEvent){alert(“Error”+oEvent.target.status+“在接收文档时发生”);},
onload:函数(响应){
if(response.readyState!==4 | | response.status!==200)返回;
//我们现在可以解析了
var myregexp=/]*>([\s\s]*?(?:您的IP地址)[\s\s]*?)/i;
var match=myregexp.exec(response.responseText);
如果(匹配!=null){
//找到匹配项
主题=匹配[1];
//格式化第一行
subject_2=subject.替换(/
/mg,”); //删除html 受试者_3=受试者_2。替换(/|/ig,“”); //现在删除空白 结果=受试者3.替换(/^[\s]*/mg,”); }否则{ //不匹配,错误 result=“我找不到您的IP地址:(”; } 警报(结果); } }); }); (功能(){ })();

使用
GM\u registerNuCommand
不会发生任何事情


我可以抛出警报,以便知道脚本正在运行,但如何运行
GM\u registerMenuCommand

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

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

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

你的脚本对我来说运行得很好。它在Firefox的警报中显示了我的IP/ISP/country等。嗯,我不明白我做错了什么。你只是照着原样使用了它?只需要添加一些元标记。上传到JSFIDLE:哦,我还在一些未声明的变量之前添加了
var
关键字,并删除了最后的空IIFE,它已经没有效果,它也缺少@grant metatag,但是它应该运行。Had必须在meta中@grant xmlhttpRequest-谢谢