Tampermonkey jQuery需要不工作

Set*_*ler 6 javascript ajax jquery tampermonkey

我正在尝试修改为Grease Monkey编写的一段代码,以使其与Tampermonkey兼容。尽管我的@require https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js,但篡改猴子一直说未定义“ $” 。require可在Greasemonkey上使用。

Tampermonkey安装的功能概述可以识别JQuery要求。

// ==UserScript==
// @name     Function
// @version  1
// @run-at   document-end
// @require  https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js
// ==/UserScript==

var userIP;

$.ajax({
    url: "https://api.ipify.org/?format=json", // Getting user Ip Address
    async: false,
    dataType: 'json',
    success: function(data) {
        userIP = data.ip; // Saving user Ip Address
    }
});
Run Code Online (Sandbox Code Playgroud)

小智 15

Greasemonkey 使用结合了JSHINT linterCodeMirror文本编辑器。

为了让 JSHINT 识别在您的代码之外声明的全局变量,您需要使用内联注释来定义它们。例如,要告诉 JSHINT 关于 jquery,请使用以下命令:

/* globals $ */
Run Code Online (Sandbox Code Playgroud)

请参阅https://jshint.com/docs/#inline-configuration


Pat*_*ans 7

既然您说它仅在编辑器中,这可能是Tampermonkey的语法检查未加载所需的脚本,而是将它们用作代码检查过程的一部分。因此,它只是看到变量没有在用户脚本本身的任何地方声明,并显示警告。该脚本仍应按预期工作。

如果消息使您感到烦恼,则可以通过$在脚本顶部显式声明变量来清除它们,如下所示:

var $ = window.jQuery;//OR
var $ = window.$;
Run Code Online (Sandbox Code Playgroud)

  • @SethWheeler提供的代码不会导致这种情况,这是您设置了ajax设置“ async:false”的事实,这告诉浏览器执行一个同步请求,该请求将冻结浏览器直到该请求完成(因此已贬值,请检查控制台以获取警告) (2认同)