【问题标题】:Why does jsLint in VS generate: A '<noscript>' must be within '< body head noframes >?为什么VS中的jsLint会生成:'<noscript>'必须在'<body head noframes>内?
【发布时间】:2023-10-05 05:55:01
【问题描述】:

我的页面的基本结构是

   body
       div id="content"
          nav
          article id="spa"
             noscript

我在docs page 中搜索 noscript,但一无所获。我什至不确定错误消息表明我应该做什么,因为 noscript 标记已经在 body 标记内。该页面显示并正常工作。当 js 支持关闭时,会显示相应的消息。我尝试将 noscript 标签移动到 body 标签的正下方,但发出了相同的警告。

作为发布此消息的一部分,我将我的 html 页面的内容(包括打开和关闭正文标记)粘贴到 jsFiddle 中,然后它就干净了。这可能特定于 Visual Studio 2012 和 JSLint.VS2012 扩展。我也没有在 JsLint 选项中看到禁用此检查的方法。

【问题讨论】:

  • 您确定 JSLint 是什么导致了该错误吗?它通常根本不看 HTML……
  • 在“错误”选项卡中,警告被标记为 JsLint 或 JsHint,而这个则显示为 JsLint。在 JsLint For Visual Studio v1.4.2.0 对话框中,它具有用于验证 HTML、CSS 和 JS 的复选框。也许它是这个 JSLint.VS2012 扩展所独有的。
  • 是的,JSLint code 中似乎没有任何针对 NOSCRIPT 的内容。不幸的是,unlike JSLint.VS2010,我不认为JSLint.VS2012 是开源的。如果有机会,我会尝试 JetBrains 的 dotPeek 并发布一个真正的答案,但我 认为 @duskwuff 你是对的;是插件,不是 JSLint。

标签: javascript visual-studio jslint


【解决方案1】:

该警告确实来自 JSLint,尽管不是最新版本 - HTML 和 CSS 代码的警告已从 JSLint quite recently 中删除。

我不知道为什么 JSLint 坚持 &lt;noscript&gt; 标签只能出现在那些地方。 HTML 5 spec says 可以去任何允许“短语内容”的地方,基本上就是所有的主要内容。

JSLint 非常非常挑剔。因此,虽然警告的存在可能是因为某些旧版浏览器在其他位置遇到了&lt;noscript&gt; 的问题……但同样可能它只是 JSLint 的创建者 Douglas Crockford 的个人烦恼。

如果你想消除所有 JSLint 警告并且你不能将 &lt;noscript&gt; 标记移动到正文,如果 JS 有机会运行,你总是可以使用被 JS 代码隐藏的常规可见元素。像这样:http://jsfiddle.net/jJNDa/

【讨论】:

  • 奇怪的是我确实把它放在了body标签里。我采纳了你的建议,只是用 JS 来隐藏它。
  • 这绝对是奇怪的。如果我使用this test HTML,那么在稍旧的“2012-01-13”版本中不会出现任何 JSLint 错误。文件上是否还有其他警告?例如。是否可能有不平衡的标签或任何东西?
最近更新 更多