为什么JavaScript Intellisense不总是在Visual Studio 2012中工作?

问题描述:

我使用Visual Studio 2012并构建了一个JavaScript Windows应用商店应用。为什么JavaScript Intellisense不总是在Visual Studio 2012中工作?

对于绝大多数情况下,intellisense起作用,但对于某些情况则不起作用。我只是想知道为什么。这里有几个例子:

var ctl=document.getElementById("txtName").winControl; 

虽然其他项目露面,“WINCONTROL”项目不会在智能感知出现,但它仍然有效。同样在这条线无二“srcElement”:

var nameInput = eventInfo.srcElement; 

这是可以预期的还是我失去了一些东西?

+1

也许这只能说明标准DOM属性? –

随着您深入研究JavaScript,与强类型语言不同,要弄清楚这些值将会变得更加困难,除非JavaScript代码是在HTML页面内编写的,编辑器可以通过该代码运行实时。

var myFunc = function (evt) { console.log(evt); } 

window.onclick = myFunc; 

myFunc("Bob"); 

什么是IDE应该做的是,而且应该evt有什么特性?

如果JavaScript是强类型的,并且该函数只能接受Event对象或ClickEvent对象,那么IDE可以确切知道期望的属性。

就像.getElementById - 如果一个页面的“myEl”为<a>,而另一个页面的ID为<canvas>,那么属性应该是什么?

+0

这很有道理。因此,在我的原始文章的第一个示例中,无论选择哪个元素,intellisense都列出了常见的项目。 winControl不显示,因为IDE不知道txtName将代表支持该属性的对象。我知道有一个很好的解释,只需要一个快速启动就能搞清楚。谢谢你的解释。 – DarLom

Norguard对于为诸如JS这样的动态语言提供建议方面的困难是正确的。为了在这种情况下提供帮助,可以使用文档注释向Visual Studio JavaScript编辑器提供提示。例如,我可以使用下面的代码:

/// <var type="WinJS.UI.ListView"/> 
var listView = document.querySelector("#listView").winControl; 

和///评论会与我的ListView变量WinJS.UI.ListView类型相关联。然后键入listView.将显示带有ListView建议的完成列表。

  • 约旦,微软的Visual Studio PM