Pregunta Problema de JSLint con 'ventana' como variable global


Entonces estoy usando JSLint para tratar de detectar errores Desactivo algunas opciones que no me gustan, pero no veo ninguna forma de permitir el uso del window variable global. Bueno, existe la opción de Widget de Yahoo, pero eso es excesivo.

¿Cuál es el problema con el uso de 'ventana', por qué JSLint dice que está causando errores?


75
2017-09-10 08:31


origen


Respuestas:


/*jslint browser: true*/

Es la solución correcta para esto.

2017-07-07: La documentación de JSLint ahora dice:

browser... No proporciona auto o ventana; tendrá que solicitar estos alias del temido objeto global usted mismo.

y

Los /global/ directive solo se puede usar cuando se selecciona la opción Asumir un navegador.

Entonces, necesitarás usar:

/* jslint browser */
/* global window */

134
2017-09-12 13:41



Simplemente haga un comentario en su script así:

/*global window */

... your script goes here

Este comentario le dirá a JSLint que window está definido en otro lugar.

Ver: http://www.JSLint.com/lint.html,

JSLint también reconoce una /* global */ comentario que puede indicar a JSLint que las variables utilizadas en este archivo se definieron en otros archivos. El comentario puede contener una lista de nombres separados por comas. Cada nombre puede ser seguido opcionalmente por dos puntos y verdadero o falso, cierto indica que la variable puede ser asignada por este archivo, y falso indicando que la asignación no está permitida, que es la predeterminada.

Cuando desee que la ventana sea global por defecto sin tener que aplicar el comentario a su secuencia de comandos, puede agregar predef:["window"] al parámetro literal del objeto dentro del JSLINT función de su local jslint.js archivo.

Por cierto, estoy usando predef:["$","window"] tener jQuery global también.

Actualizar:

Esta respuesta fue correcta en 2009. A partir de ahora, debe usar el solución /*jslint browser: true*/ proporcionado por Matt Clarkson.


76
2017-09-10 08:37



Para que JSLint sepa que usted reconoce window como un objeto global, agregue esta directiva en la parte superior de su archivo:

/*global window*/

Solía ​​poder usar:

/*jslint browser: true */

pero esto ya no parece funcionar. Ahora, según el JSHint ayuda con respecto a browser opción:

No proporciona self o window; tendrá que solicitar estos alias del temido objeto global usted mismo.

No estoy seguro de cuándo se realizó ese cambio, pero me tuvo bloqueado por un tiempo.


4
2017-11-17 04:54



Tuve que usar las dos respuestas anteriores en este código para deshacerme de todas las advertencias:

/*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));

Entonces para mí, esta es la solución cuando uso el Sitio web de JSLint:

/*jslint browser:true*/
/*global window*/

3
2017-10-29 15:27



Si no desea especificar esto en cada archivo, puede configurarlo globalmente en su eslintrc archivo de configuración como este:

"globals": {
    "window": true,
}

1
2017-10-02 11:47