web-dev-qa-db-ja.com

Tampermonkey jQueryは動作しない必要があります

Tampermonkeyと互換性を持たせるために、Grease Monkey用に記述したコードを変更しようとしています。私の@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
    }
});
6
Seth Wheeler

あなたはそれがエディターのみにあると言うので、これはおそらくTampermonkeyの構文チェックで必要なスクリプトをロードせず、コードチェックプロセスの一部としてそれらを使用しています。したがって、変数がユーザースクリプト自体のどこにも宣言されていないことがわかり、警告が表示されます。スクリプトは期待どおりに機能するはずです。

メッセージが気になる場合は、次のようにスクリプトの先頭で$変数を明示的に宣言することにより、メッセージをクリアできます。

var $ = window.jQuery;//OR
var $ = window.$;
7
Patrick Evans

Greasemonkeyは [〜#〜] jshint [〜#〜] リンターと組み合わせた CodeMirror テキストエディターを使用します。

JSHINTがコード外で宣言されたグローバル変数を認識できるようにするには、インラインコメントを使用してそれらを定義する必要があります。たとえば、JSHINTにjqueryについて伝えるには、次のようにします。

/* globals $ */

https://jshint.com/docs/#inline-configuration を参照してください

4
Nathan Fearnley