Ich verwende JSLint , um Fehler zu erkennen. Ich deaktiviere einige Optionen, die mir nicht gefallen, aber ich sehe keine Möglichkeit, die Verwendung der window
globalen Variablen zu ermöglichen. Nun, es gibt die Yahoo Widget-Option, aber das ist übertrieben.
Was ist mit der Verwendung von "Fenster" zu tun? Warum sollte JSLint sagen, dass dies Fehler verursacht?
javascript
jslint
Björn
quelle
quelle
Antworten:
/*jslint browser: true*/
War die richtige Lösung dafür. Ab dem 07.07.2017 müssen Sie die globale Direktive manuell festlegen. Aus der JSLint-Dokumentation :
Sie müssen also Folgendes verwenden:
/*jslint browser */ /*global window */
quelle
Some globals can be predefined for you. Select the Assume a browser (browser) option to predefine the standard global properties that are supplied by web browsers, such as document and addEventListener.
Dies beinhaltet auch ein Fenster.Machen Sie einfach einen Kommentar in Ihrem Skript wie folgt:
/*global window */ ... your script goes here
Dieser Kommentar teilt JSLint mit, dass er an einer
window
anderen Stelle definiert ist.Siehe: http://www.JSLint.com/lint.html ,
Wenn das Fenster standardmäßig global sein soll, ohne dass der Kommentar auf Ihr Skript angewendet werden muss, können Sie
predef:["window"]
den Objektliteralparameter in derJSLINT
Funktion Ihrer lokalenjslint.js
Datei hinzufügen .Übrigens verwende ich
predef:["$","window"]
jQuery auch global.Aktualisieren:
Diese Antwort war 2009 richtig. Ab sofort sollten Sie
/*jslint browser: true*/
die von Matt Clarkson bereitgestellte Lösung verwenden .quelle
browser: true
ist./*
und kein Leerzeichen stehen darf, daglobal
JSLint die Deklaration anscheinend ignoriert./*jslint browser: true*/
nicht mehr funktioniert.Fügen Sie
window
diese Anweisung oben in Ihrer Datei hinzu , damit JSLint weiß, dass Sie ein globales Objekt erkennen :/*global window*/
Früher konnte ich verwenden:
/*jslint browser: true */
aber das scheint nicht mehr zu funktionieren. Nun, laut der JSHint-Hilfe bezüglich der
browser
Option:Ich bin mir nicht sicher, wann diese Änderung vorgenommen wurde, aber sie hat mich für eine Weile behindert.
quelle
Ich musste beide oben genannten Antworten auf diesen Code verwenden, um alle Warnungen zu entfernen:
/*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));
Für mich ist dies die Lösung bei der Verwendung der JSLint-Website :
/*jslint browser:true*/ /*global window*/
quelle
Wenn Sie dies nicht in jeder Datei angeben möchten, können Sie es global in Ihrer eslintrc- Konfigurationsdatei wie folgt festlegen :
"globals": { "window": true, }
quelle