Javascript JSLint和bookmarklet
我正在使用运行JSLint检查Rhino 我发现有点奇怪,想知道是否可以从其他程序员那里得到一些信息。基本上,下面的一行会得到一个JSLint“脚本URL”错误:Javascript JSLint和bookmarklet,javascript,bookmarklet,rhino,jslint,Javascript,Bookmarklet,Rhino,Jslint,我正在使用运行JSLint检查Rhino 我发现有点奇怪,想知道是否可以从其他程序员那里得到一些信息。基本上,下面的一行会得到一个JSLint“脚本URL”错误: var a = '<a href="javascript:alert(\'I am a bookmarklet\');" >Drag me to your Toolbar</a>'; 我研究了Douglas Crockford在中编写的代码,发现他确实在进行如下测试: // javascript url jx
var a = '<a href="javascript:alert(\'I am a bookmarklet\');" >Drag me to your Toolbar</a>';
我研究了Douglas Crockford在中编写的代码,发现他确实在进行如下测试:
// javascript url
jx = /(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
所以,考虑到这个约束以及拖放书签只使用标记的HREF属性这一事实。如何动态创建通过JSLint测试的bookmarklet
谢谢你的意见。JSLint有时可能太挑剔了。在这种情况下,我建议尝试采取变通办法。以下两种方法通过将字符串拆分为更小的部分来绕过正则表达式测试:
var x = ['<a href="javascript', ':', 'stuff'].join('');
编辑:如果使用的是JSLint而不是JSLint,则可以设置“scripturl”选项来抑制此类警告,而无需使用变通方法:
/*jshint scripturl:true*/
var x = 'javascript: foo()';
我也遇到了这个问题,就像之前有人建议的那样,你可以把它分成几个部分来避开警告,但是
var x = 'javascript' + ':';
不行。比之前建议的方法更简单的方法是:
var x = 'javascript' + ':'.toLowerCase() + 'alert("my action")';
谢谢missigno,我自己也在想
'javascript'+':'+bookmarkletJs
,但我想知道是否有更优雅的方法。我能想到的唯一更优雅的事情是是否有一个JSLint选项来禁用警告。但是,我今天没有心情浏览JSLint选项;)这个答案不再有效,而且,没有选项禁用检查!真烦人。更糟糕的是,在jslint中没有任何通用的方法可以忽略代码部分。总结如下:没有办法在jslint中隐藏这方面的警告。@weiglt:看来jslint又成了一个迂腐的混蛋了。除了使用内部变量的解决方法外,还可以使用Array.join或使用JSHint。@weiglt:正如我前面提到的,这取决于“javascript”是否位于字符串的开头。
/*jshint scripturl:true*/
var x = 'javascript: foo()';
var x = 'javascript' + ':';
var x = 'javascript' + ':'.toLowerCase() + 'alert("my action")';