vs2008中编辑 更新jscript intellisense报错

 主要错误原因是:

Javascript Intellisense是吸引我改用VS2008編輯ASP.NET 2.0專案的重要原因之一,我卻被一個煩人的相關警告騷擾了好幾天。

只要一Build專案,Error List中就會出現Error updating JScript IntelliSense: MicrosoftAjax.debug.js:: 'Sys.Res.argumentDomElement' is null or not an object @ 201:8的警告訊息,發生地點在C:/WWW/MyWeb/Default.aspx,Double Click警告,會跳到Default.aspx的第一列,表面上看不出有任何關聯。

摸了好久才搞清楚是怎麼一回事,原來這與Javascript Intellisense的運作原理有關。狀況不太容易說明清楚,所以用一個簡單的實例示範,待我細細道來...

我原先寫了類似以下範例,用$addHandler掛載onclick事件的Javascript Code:

排版顯示 純文字
<input type="button" id="btn" value="Click Me!" />
<script type="text/javascript">
$addHandler($get("btn"), "click", btnClick);
function btnClick() {
    alert("Yo!");
}
</script>

後來,發現這段Code可以給多個網頁共用,所以很直覺地把它拆出來另存成inc.js:

排版顯示 純文字
$addHandler($get("btn"), "click", btnClick);
function btnClick() {
    alert("Yo!");
}

然後Default.aspx改用Inclue:

排版顯示 純文字
<input type="button" id="btn" value="Click Me!" />
<script type="text/javascript" src="js/inc.js"></script>

這種改法在過去ASP/ASP.NET時代玩過千百回,這次也不例外,實際執行沒發生任何差錯。只是從此以後,只要我一Build網站或企圖Debug,Error List就會跑出Error updating JScript Intellisense的警告,雖然並不影響網站運作,但一來這個警告對有潔癖的我來說頗為礙眼,二來出現這個警告後,VS2008就不會對inc.js裡的其他函數提供Javascript Intellisense功能。逼得我心不甘情不願地花了點時間反覆測試與追查,總算理出一些頭緒:

  1. 為了產生Javascript Intellisense的神奇效果,VS2008在你Coding的階段就會即時執行網頁與js檔裡的Javascript, 'Sys.Res.argumentDomElement' is null or not an object的錯誤便是VS2008呼叫$addHandler時抛出的參數無效例外。
  2. 當VS2008單獨執行inc.js裡的$get("btn"),當下沒有任何網頁DOM,想當然爾會傳回null, 接著null被當成$addHandler的第一個參數,觸發了前述的錯誤。
  3. 當VS2008無法執行、分析js,便會傳回Error updating JScript Intellisense警告,並喪失部分提示能力。

搞清楚原委,我們要進行的處理便是要確保inc.js可以被"獨立執行"而不出錯,$get("btn")的寫法必須跟網頁一起執行才有意義,單獨跑inc.js時便會出問題。因此我把$addHandler包進一個initJob()函數,再由網頁中呼叫initJob(),這樣便可確保在每次被呼叫的當下,$get("btn")都會傳回正確的物件。

所以,inc.js修改如下:

排版顯示 純文字
function initJob() 
{
    $addHandler($get("btn"), "click", btnClick);
}
function btnClick() {
    alert("Yo!");
}

Default.aspx則加上呼叫initJob()的Code:

排版顯示 純文字
<input type="button" id="btn" value="Click Me!" />
<script type="text/javascript" src="js/inc.js"></script>
<script type="text/javascript">
initJob();
</script>

搞定收工!

 

 

 

visual studio 2008中出现更新 JScript IntelliSense 时发生错误:....jquer...

Visual Web Developer 2008出现:“更新 JScript IntelliSense 时发生错误: C:/Documents and Settings/{user}/MyDocuments/Visual Studio 2008/WebSites/{project}/js/jquery-1.3.2.min.js: Object doesn't support this property or method @ 18:9345..."

在搜索引擎找到一篇文章,安装HotFix没有解决,

------------------安装HotFix-----------------------------------

在VS.net 2008中使用JQuery中,在输入JQuery相关的JavaScript代码后,无自动代码感知列表。如输入代码的过程中,在VS.net2008的错误列表中会提示由于外部脚本引用中存在错误,因此未生成客户端脚本intellisense(智能感知)。搜索了一下,需要下载补丁程序。

警告 53 更新 JScript IntelliSense 时出错: 由于外部脚本引用中存在错误,因此未生成客户端脚本 IntelliSense 信息。 H:/zgs0805/zonghe/trainTicketSaleSite.html 1 1 H:/zgs0805/

需要为vs.net 2008安装如下补丁,下面是该补丁的介绍:KB958502-JScript Editor support for “-vsdoc.js” IntelliSense documentation files,在微软的MSDN下载频道中下载:

runtime binary, 2184K, uploaded Nov 4 - 14265 downloads
该补丁比较新,才推出的:
Release Details
Status
Released
Release Date 十一月 03 2008   
Updated On 十一月 03 2008
Updated By DDHotfix
Wiki Link
[release:1736]

如果下载后提示无法安装,或者仍然不出现,需要下载visual studio.net 2008的SP1.

-----------------------------------------------------------------------------------------------------------------------

琢磨了半天,终于打开解决方案了,如下:


1. 不要使用Minified版本(jquery-1.3.2.min.js),改用Uncompressed版本(jquery-1.3.2.js)
2. 把jquery-1.3.2-vsdoc2.js 重命名为jquery-1.3.2-vsdoc.js

假如你有使用jQuery UI的话,你应该会有jquery-ui-1.7.1.custom.min.js这个档案,除了以上两点,还要建立一个空白文本,重命名为jquery-ui-1.7.1.custom.min-vsdoc.js给它。

最后全部放置在同一个目录下,再去ToolBar的Edit,更新一次jQuery IntelliSense就OK了。

如下图所示:

 

 

Published 25 January 2008 08:47 AM 由 Jeffrey
Filed under: ASP.NET, KB, VS2008
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值