75

そのため、 JSLintを使用してエラーを検出しようとしています。window気に入らないオプションをいくつかオフにしましたが、グローバル変数を使用できるようにする方法がわかりません。さて、Yahoo Widgetオプションがありますが、それはやり過ぎです。

'window'を使用するとどうなりますか?なぜJSLintはそれがエラーを引き起こしていると言うのでしょうか?

4

5 に答える 5

135
/*jslint browser: true*/

これに対する正しい解決策でした。2017-07-07以降、グローバルディレクティブを手動で設定する必要があります。JSLintドキュメントから:

/ * global * /ディレクティブは、このファイルで使用できる一連のグローバル(通常は関数および関数を含むオブジェクト)を指定するために使用されます。これは、ES6モジュールが登場する前に、ブラウザでソースファイルをリンクするために一般的に使用されていました。グローバル変数の使用は強くお勧めしませんが、残念ながらWebブラウザーではグローバル変数を使用する必要があります。/ * global * /ディレクティブは、「ブラウザーの想定」オプションが選択されている場合にのみ使用できます。

したがって、以下を使用する必要があります。

/*jslint browser */
/*global window */
于 2011-09-12T13:41:35.003 に答える
76

スクリプトに次のようにコメントするだけです。

/*global window */

... your script goes here

このコメントは、別の場所で定義されているJSLintに通知しwindowます。

参照:http ://www.JSLint.com/lint.html 、

/* global */JSLintは、このファイルで使用されている変数が他のファイルで定義されていることをJSLintに示すことができるコメントも認識します。コメントには、名前のコンマ区切りリストを含めることができます。各名前の後にはオプションでコロンを付けることができ、trueまたはfalseのいずれかです。trueは変数がこのファイルによって割り当てられる可能性があることを示し、falseは割り当てが許可されないことを示します。これはデフォルトです。

スクリプトにコメントを適用せずにウィンドウをデフォルトでグローバルにしたい場合は、ローカルファイルの関数predef:["window"]内のオブジェクトリテラルパラメータに追加できます。JSLINTjslint.js

ところで、私はpredef:["$","window"]jQueryをグローバルにするためにも使用しています。

アップデート:

この答えは2009年に正しかった。今のところ、MattClarkson/*jslint browser: true*/が提供するソリューションを使用する必要があります。

于 2009-09-10T08:37:40.110 に答える
4

グローバルオブジェクトとして認識していることをJSLintに通知するwindowには、ファイルの先頭に次のディレクティブを追加します。

/*global window*/

以前は次のものを使用できました。

/*jslint browser: true */

しかし、これはもはや機能していないようです。さて、オプションに関するJSHintヘルプによるとbrowser

それは供給しませんselfまたはwindow; 恐ろしいグローバルオブジェクトのこれらのエイリアスを自分でリクエストする必要があります。

その変更がいつ行われたかはわかりませんが、しばらくの間、私は窮地に立たされました。

于 2015-11-17T04:54:16.550 に答える
3

すべての警告を取り除くには、このコードで上記の両方の回答を使用する必要がありました。

/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
    'use strict';
    win.eventBoiler = function (selector, typeOfEvent, func) {
        doc.querySelector(selector).addEventListener(typeOfEvent, func);
    };
    win.eventBoiler.all = function (selectors, typeOfEvent, func) {
        Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
            i.addEventListener(typeOfEvent, func);
        });
    };
}(window, document));

だから私にとって、これはJSLintWebサイトを使用するときの解決策です:

/*jslint browser:true*/
/*global window*/
于 2015-10-29T15:27:22.783 に答える
1

すべてのファイルでこれを指定したくない場合は、次のようにeslintrc構成ファイルでグローバルに設定できます。

"globals": {
    "window": true,
}
于 2017-10-02T11:47:28.070 に答える