jQuery -- jquery-1.4.4-vsdoc.js會讓jQuery無法運作

我們在Visual Studio 2008後期增加了對jQuery支援,後來的Visual Studio 2010是全面支援,現在我們很方便的只要從Microsoft Ajax CDN引用jQuery*.js及jQery*.-vsdoc.js,就能同時使用jQeruy及即時性的說明訊息,即時性的說明訊息對我而言是很重要的,尤其常常寫東西會東少一點西少一點。

在使用最新jQuery 1.4.4版,奇怪,怎麼連個alert('Hi');都不理我,後來查看了一下Firebug,才知道原來是引用「http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4-vsdoc.js」這個jquery-1.4.4-vsdoc.js有問題:
class2type is not defined
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4-vsdoc.js
Line 2404

原因很清楚了,這個jquery-1.4.4-vsdoc.js有bug,會造成jQuery無法運作。

解決的辦法有二:

  1. 移除使用jquery-1.4.4-vsdoc.js
    當你要執行網頁時,先將引用link移除,那你的jQuery程式就可以work了。經過測試,目前1.4.1、1.4.2、1.4.3、1.4.4版本(1.4無提供*.-vsdoc.js),只要引用*.-vsdoc.js,都會造成網頁上jQuery無法運作。
  2. 改引用jQuery 1.3.2版本,就能正常work了。
    http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.3.2.min.js
    http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.3.2.min-vsdoc.js

除非你有特別使用到jQuery 1.4.x版本的功能,不然我是採用方法二,反正只要在Visual Studio裡開發方便即可,正式上線再修改為目前最新版本的jQuery 1.4.4即可。

ps討論:

我jQuery 1.2.6或jQuery 1.3.2用的好好的,為什麼上線前還要換成jQuery 1.4.4版,我個人的想法是「效能」。目前我的程式由jQuery 1.2.6升級為1.3.2再升級為1.4.4,都無出錯的現象,但單單得到的效能,可說是「倍數」成長,在執行大量Javascript時,這可不能說不補,畢竟當我們點網頁時「快、還要更快」,最好都能在0.x秒內完成@_@!

4 則留言:

  1. 有個小疑問,請問你是直接在網頁中加入<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4-vsdoc.js">才導致問題嗎?( 原則上Visual Studio在看到jquery*.js後會自動在同一URL目錄下找vsdoc.js檔案,不需要自行加&lgt;script>指向它(所以Firebug根本不該看到它),所以不應該有文中所說的狀況才對。

    回覆刪除
  2. Dear 暗黑大大
    是的,是直接引用aspnetcdn。

    因為代管的主機有一部份費用是計算「頻寬」,所以才會使用cdn,雖然省不到什麼錢。@_@

    如你所說,單獨使用jquery*.js或單獨使用本身(網站)jquery*.js,不會有問題。

    回覆刪除
  3. 沒錯,速度快跟省頻寬是用CDN最大的好處。
    再補充一下,要使用Javascript Intellisense,並不需要在網頁中引用<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.4.4-vsdoc.js">,Visual Studio會看jquery-1.4.4.js的位置自己去下載。所以應該可以把網頁裡jquery-1.4.4-vsdoc.js的參照移掉,照樣可以在VS中獲得即時的說明訊息,也不會有文中的class2type is not defined錯誤,所以可以大大方方地用1.4.4,在新版瀏覽器中有蠻大的加速效果。

    回覆刪除
  4. 感謝暗黑大大的提醒,我不知道不需引用*.-vsdoc.js這一段。再次感謝。

    回覆刪除

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。