javascript - JSLint 和书签

标签 javascript bookmarklet rhino jslint

我正在使用 jslintant.jsRhino 中运行 JSLint 检查

我发现了一些奇怪的东西,想知道我是否可以从其他程序员那里得到一些意见。基本上,以下行会出现 JSLint 'Script URL' 错误:

var a = '<a href="javascript:alert(\'I am a bookmarklet\');" >Drag me to your Toolbar</a>';

错误:

Lint at line 124 character 35: Script URL.

我已经研究了 Douglas Crockford 在 fulljslint.js 中编写的代码 发现他确实是这样测试的:

// javascript url
jx = /(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,

因此,鉴于此约束以及拖放小书签仅使用 A 标签的 HREF 属性这一事实。我们如何动态创建通过 JSLint 测试的小书签?

感谢您的输入。

最佳答案

JSLint 有时可能过于挑剔。在这种情况下,我建议尝试寻求解决方法。以下两个通过将字符串拆分为更小的部分来绕过正则表达式测试:

var x = ['<a href="javascript', ':', 'stuff'].join('');

var tmp = '<a href="javascript'
var x = tmp + ':stuff"';

不幸的是,您不能只将字符串文字与 + 连接起来(正如该答案的旧版本曾经建议的那样),因为 JSLint 的新版本添加了一些特殊代码来检测:

var x = 'javascript' + ':' + 'stuff'; // JSLint might still give a warning here.

编辑:如果您正在使用 JSHint除了 JSLint,您还可以设置“scripturl”选项来抑制此类警告,而无需使用解决方法:

/*jshint scripturl:true*/
var x = 'javascript: foo()';

关于javascript - JSLint 和书签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966880/

相关文章:

java - Rhino:如何从 JavaScript 调用的 Java 方法返回一个整数?

javascript - 只能发出一个 GET 请求,没有错误 : "Can' t set headers after they are sent. "

javascript - 如何使用小书签删除内联 onclick 属性?

javascript - 动态生成的按钮上的 React.js Onclick 事件未触发

javascript - 如何在 $.each() 循环中保持 $.ajax() 异步但对每次迭代的结果使用react

Javascript - 替换所有少于 X 个字符的行

java - Mozilla犀牛 : Default JavaScript Compliance Level

io - 如何使用dart2js读取stdin和写入stdout

javascript - MVC 表单 Javascript Post 在 Controller 内为空

javascript - 能够序列化/重新水合元素状态的 JS 库