添加额外的js文件会破坏jQuery IntelliSense

时间:2009-02-17 01:48:22

标签: javascript jquery visual-studio-2008 intellisense

我一直在VS2008中使用jQuery IntelliSense,它一直很棒。最近我添加了对jQuery UI的引用,从那时起,jQuery IntelliSense就消失了。我发现,一旦你在文档中引用了另一个.js文件,IntelliSense就会消失。有什么方法可以避免这种情况吗?

6 个答案:

答案 0 :(得分:13)

如果任何引用文件中存在错误,它将破坏来自同一文档的所有文件引用的智能感知。在这方面,Visual Studio的下一个版本将更加强大。我为这种脆弱直接道歉。我们在早期做出了一些设计决策,因为我们阻止了我们使VS9外部参考更加健壮。

在此期间,请使用以下解决方法。从Slace给你的链接安装SP1。如果你有一个名为.js的文件引用,并且在同一个位置有一个名为-vsdoc.js的文件,那么JS intellisense将获取-vsdoc版本。如果该脚本为空,则不会生成错误。识别导致智能感知生成失败的jquery插件,并在其旁边放置-vsdoc版本。您不会获得UI的intellisense,但您仍然会获得jquery和其他可行的插件。

你在vsdoc版本中放置的任何内容都会显示在intellisense中。如果需要,您可以放置​​要在intellisense中显示的数据结构的欺骗版本。

答案 1 :(得分:8)

可能是其中一个次要引用的JavaScript文件中存在错误。打开你的JS文件,一旦“更新JavaScript智能感知”已经从Visual Studio的状态栏中消失(有一个菜单选项会强制JS智能感知刷新,不记得它在哪里,我只是创建了一个键盘快捷键通过工具 - >选项 - >键盘区域)打开你的错误窗口,在警告下你应该找到智能感知无法加载的原因。

这通常是在解析其中一个文件时发现的一个错误,但是当我引用了大量文件时,我发现了堆栈溢出。

编辑:您还应该确保安装了此VS补丁:http://code.msdn.microsoft.com/KB958502和VS 2008 SP1(首先安装SP1!)。然后你只需要:

/// <reference path="/path/to/jquery-1.3.1.js" />

确保在intellisense文件上保留-vsdocs,它将自动被选中(只要它与您引用的文件位于同一文件夹中)

答案 2 :(得分:8)

接受的答案帮助我解决了这个问题,但没有解决问题。我安装了修补程序:http://code.msdn.microsoft.com/KB958502但仍然收到错误。

错误:

Error updating JScript IntelliSense: D:\Dev\Test\Scripts\jQuery-1.3.2-vsdoc.js: 'jQuery.support.htmlSerialize' is null or not an object @ 1430:4

如果没有相应的-vsdoc.js文件,添加以下文件会导致上述问题。

<script src="../../Scripts/jquery-ui-1.7.custom.min.js" type="text/javascript"></script>

我在我的脚本文件夹中添加了一个空文件“jquery-ui-1.7.custom.min-vsdoc.js”,并且Jscript Intellisense问题消失了。

答案 3 :(得分:2)

我想提出一个更好的解决方案。几个月前,我解决了这个问题,并为jQuery UI创建了一个非常基本的vsdoc文件。 Here's the link to the blog post (which has the file for download).

答案 4 :(得分:1)

我根据上面的建议通过一个小扩展解决了这个问题:我的诀窍是在我的页面上添加一个引用到我的jqueryui.com库和我创建的文件的空白-vsdoc.js版本: / p>

<script type="text/javascript" src="../../Scripts/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery-ui-1.7.2.custom.min-vsdoc.js"></script>

希望这有帮助!

答案 5 :(得分:1)

很好,调整是为每个麻烦* .js文件创建一个空的* -vsdoc.js文件。

我发现这个错误是由匿名函数引起的,例如像这样:

(function($) {
    $.anything...;
})(jQuery);

希望这会导致有人创建http://code.msdn.microsoft.com/KB958502和JScript智能感知团队。