脚本定位URL有什么问题?

Met*_*der 15 javascript validation jshint

我正在使用JSHint,它出现以下错误:

Script URL.
Run Code Online (Sandbox Code Playgroud)

我发现这是因为在这个特定的行上有一个包含javascript:...URL 的字符串.

我知道JSHint抱怨因为该scripturl选项已设置,并且因为我的代码库非常大,所以我现在必须取消它.

不过,我不明白使用脚本URL的问题是什么?

SLa*_*aks 22

javascript: 网址是'eval is evil'的一部分.

为了执行javascript:URL,浏览器必须启动JS解析器并解析URL的文本.
这是一个缓慢而昂贵的过程.

此外,组装javascript:URL(或包含源代码的其他字符串)是一项棘手的任务,容易出现XSS漏洞.

最后,混合代码和URL违反了内容和行为(代码)的分离.

  • 浏览器可能想要特别优化像`javascript:;`和`javascript:void(0);`这样的链接,因为它们很常见. (5认同)
  • @Barmar:无论如何,它都需要解析你的`<script>`标签.但是,解析一个较长的脚本比使用更短的脚本更好. (2认同)