为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?

Posted

技术标签:

【中文标题】为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?【英文标题】:Why does JavaScript Intellisense not always work in Visual Studio 2012?为什么 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效? 【发布时间】:2012-12-07 04:29:03 【问题描述】:

我正在使用 Visual Studio 2012 并构建一个 javascript Windows Store 应用程序。

在大多数情况下,智能感知有效,但在某些情况下却无效。我只是想知道为什么。以下是几个例子:

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

虽然出现了其他项目,但“winControl”项目并没有出现在智能感知中,但它仍然有效。此行中的“srcElement”也是如此:

var nameInput = eventInfo.srcElement;

这是意料之中的还是我错过了什么?

【问题讨论】:

也许它只显示标准 DOM 属性? 【参考方案1】:

随着您对 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>相同,那么属性应该是什么?

【讨论】:

这是有道理的。因此,在我原始帖子的第一个示例中,智能感知列出了那些常见的项目,而不管选择了什么元素。 winControl 没有显示,因为 IDE 不知道 txtName 将表示支持该属性的对象。我知道有一个很好的解释,只是需要一个快速启动来弄清楚它。谢谢你的解释。【参考方案2】:

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

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

并且 /// 注释会将 WinJS.UI.ListView 类型与我的 listView 变量相关联。输入 listView. 将显示一个完成列表,其中包含对 ListView 的建议。

乔丹,微软 Visual Studio 项目经理

【讨论】:

以上是关于为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Javascript 不起作用?

为啥 JavaScript 需要以“;”开头?

为啥简单的javascript代码没有运行?

为啥 HtmlUnitDriver 不执行 JavaScript?

为啥这个 javascript 命令不执行?

为啥 JavaScript 函数文档在函数之外?