我正在使用phing-drupal-template并且遇到jslinting问题。当使用带有--jslint选项的外部jslint时 - 浏览器选项和内联选项都不会被识别为
/*jslint browser: true */
非常感谢任何帮助。 THX。
java -jar tools/jslint4java/jslint4java-2.0.5/jslint4java-2.0.5.jar
--browser
--predef "jQuery,$,Modernizr"
../sites/all/modules/custom/zendigital/js/frontpage.js
java -jar tools/jslint4java/jslint4java-2.0.5/jslint4java-2.0.5.jar
--jslint tools/jslint/fulljslint.js
--browser
--predef "jQuery,$,Modernizr"
../sites/all/modules/custom/zendigital/js/frontpage.js
jslint:...frontpage.js:59:40:'window' is not defined.
jslint:...frontpage.js:84:23:'window' is not defined.
jslint:...frontpage.js:104:36:'window' is not defined.
jslint:...frontpage.js:105:23:'window' is not defined.
jslint:...frontpage.js:180:25:'Modernizr' is not defined.
jslint:...frontpage.js:250:65:'window' is not defined.
jslint:...frontpage.js:250:86:'window' is not defined.
jslint:...frontpage.js:278:4:'jQuery' is not defined.
答案 0 :(得分:0)
如果您使用canonical jslint file,行为是否存在?您在四年前联系的那个,已经更新,并且似乎不尊重window
。
在规范的当前JSLint文件中比较此部分,确实包含window
:
https://github.com/douglascrockford/JSLint/blob/master/jslint.js#L343
// browser contains a set of global names that are commonly provided by a
// web browser environment.
browser = array_to_object([
'clearInterval', 'clearTimeout', 'document', 'event', 'FormData',
'frames', 'history', 'Image', 'localStorage', 'location', 'name',
'navigator', 'Option', 'parent', 'screen', 'sessionStorage',
'setInterval', 'setTimeout', 'Storage', 'window', 'XMLHttpRequest'
], false),
...自2010年11月以来,您的版本没有任何更新,不包含window
。
https://github.com/mikewest/JSLint/blob/master/fulljslint.js#L340
// browser contains a set of global names which are commonly provided by a
// web browser environment.
browser = {
addEventListener: false,
blur : false,
clearInterval : false,
clearTimeout : false,
close : false,
closed : false,
defaultStatus : false,
document : false,
event : false,
focus : false,
frames : false,
getComputedStyle: false,
history : false,
Image : false,
length : false,
location : false,
moveBy : false,
moveTo : false,
name : false,
navigator : false,
onbeforeunload : true,
onblur : true,
onerror : true,
onfocus : true,
onload : true,
onresize : true,
onunload : true,
open : false,
opener : false,
Option : false,
parent : false,
print : false,
removeEventListener: false,
resizeBy : false,
resizeTo : false,
screen : false,
scroll : false,
scrollBy : false,
scrollTo : false,
setInterval : false,
setTimeout : false,
status : false,
top : false,
XMLHttpRequest : false
},
我根本没有看过--predef "jQuery,$,Modernizr"
。
我不建议一般使用相对匿名的JSLint文件,更不用说已经使用了四年的文件。您正在使用哪些更改?将它添加到尊重window
的更新的JSLint版本可能更容易 - 或者使用JSHint来获得相同的更改,如果它们在那里有用的话。 (或者,正如我经常争辩的那样,你总是可以接受JSLint的建议。; ^ D)
编辑:您可以针对过时版本尝试widget
设置。 That appears to have window
in it:
// widget contains the global names which are provided to a Yahoo //
(fna Konfabulator) widget.
widget = {
alert : true,
animator : true,
appleScript : true,
beep : true,
//...
Window : true,
XMLDOM : true,
XMLHttpRequest : true,
yahooCheckLogin : true,
yahooLogin : true,
yahooLogout : true
},
那就是说,你现在非常标准(widget
不当前的JSLint指令并包含很多与Konfabulator相关的内容),你真的应该抛弃这个分支并更新到当前的规范版本。这更像是一个有趣的实验"而不是推荐的修复。
您也可以将window: true,
插入browser
数组,但是,再次,您最好在当前版本的JSLint中从该分支进行编辑,使用JSHint,如果它有,或者只是遵循当前版本的JSLint的建议。
尽管如此,我无法用a minimal JSLint wrapper复制您使用旧的分支版本查看的问题;它让大量的东西通过。对不起,希望我能提供更多帮助。