首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSLint和Bookmarklet

JSLint和Bookmarklet
EN

Stack Overflow用户
提问于 2011-11-01 13:04:58
回答 2查看 3.5K关注 0票数 13

我正在使用JSLintRhino中使用jslintant.js进行检查。

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

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

错误:

代码语言:javascript
复制
Lint at line 124 character 35: Script URL.

我深入研究了Douglas在fulljslint.js中编写的代码,发现实际上他正在对此进行测试,如下所示:

代码语言:javascript
复制
// javascript url
jx = /(?:javascript|jscript|ecmascript|vbscript|mocha|livescript)\s*:/i,

因此,考虑到这个约束以及拖放书签只使用A标记的HREF属性这一事实。我们如何动态创建通过JSLint测试的书签?

谢谢你的意见。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-01 13:08:51

JSLint有时会太挑剔。在这种情况下,我建议尝试一个解决办法。下面两个部分通过将字符串拆分成更小的部分来绕过regex测试:

代码语言:javascript
复制
var x = ['<a href="javascript', ':', 'stuff'].join('');

代码语言:javascript
复制
var tmp = '<a href="javascript'
var x = tmp + ':stuff"';

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

代码语言:javascript
复制
var x = 'javascript' + ':' + 'stuff'; // JSLint might still give a warning here.

编辑:如果您使用的是JSHint而不是JSLint,您可以设置"scripturl“选项来抑制此类警告,而无需使用解决办法:

代码语言:javascript
复制
/*jshint scripturl:true*/
var x = 'javascript: foo()';
票数 16
EN

Stack Overflow用户

发布于 2014-12-12 09:03:51

我也遇到了这个问题,就像有人建议的那样,你可以把它分成几个部分来避开警告,但是

代码语言:javascript
复制
var x = 'javascript' + ':';

不起作用。一个比以前建议的方法更简单的方法是:

代码语言:javascript
复制
var x = 'javascript' + ':'.toLowerCase() + 'alert("my action")';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7966880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档