Ste*_*las 13 javascript bookmarklet jslint rhino
我跑的JSLint在检查犀牛使用jslintant.js.
我发现有些奇怪的东西,并想知道我是否可以从其他程序员那里得到一些意见.基本上,以下行获取JSLint "脚本URL"错误:
var a = '<a href="javascript:alert(\'I am a bookmarklet\');" >Drag me to your Toolbar</a>';
Run Code Online (Sandbox Code Playgroud)
错误:
Lint at line 124 character 35: Script URL.
Run Code Online (Sandbox Code Playgroud)
我已经进入了道格拉斯· 克罗克福德在fulljslint.js中编写的代码,并发现他确实按如下方式对此进行了测试:
// javascript url
jx = /(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,
Run Code Online (Sandbox Code Playgroud)
因此,考虑到这种约束以及拖放bookmarklet仅使用A标记的HREF属性这一事实.我们如何动态创建通过JSLint测试的bookmarklet?
感谢您的输入.
hug*_*omg 16
JSLint有时候太挑剔了.在这种情况下,我建议尝试寻找解决方法.以下两个通过将字符串拆分为较小的部分来绕过正则表达式测试:
var x = ['<a href="javascript', ':', 'stuff'].join('');
Run Code Online (Sandbox Code Playgroud)
要么
var tmp = '<a href="javascript'
var x = tmp + ':stuff"';
Run Code Online (Sandbox Code Playgroud)
不幸的是,你不能只是连接字符串文字+(作为这个答案的旧版本用于建议),因为新版本的JSLint添加了一些特殊代码来检测:
var x = 'javascript' + ':' + 'stuff'; // JSLint might still give a warning here.
Run Code Online (Sandbox Code Playgroud)
编辑:如果您使用的JSHint代替的JSLint您可以设置"在scriptUrl"选项来剿此类警告,而无需使用一种变通方法:
/*jshint scripturl:true*/
var x = 'javascript: foo()';
Run Code Online (Sandbox Code Playgroud)