[IE11] 在 Win8.1 下對 VBScript 除錯

我一堆 VBScript 寫的網頁也不是說改就能改的,特別是結合 VML 的網頁。這部分不能不抱怨 IE11 ,支援 HTML5 也沒必要捨棄 VML 吧… 特別是 VML 支援 .emz 向量檔,繪圖區裡面有表格,不像 canvs 只能收點陣檔,裡面也不能用 <table>…</table> ,少了一堆彈性,比 VML 爛多了。

話說,我有個 VML 網頁是給業主在電視牆中固定展示的,會定時透過 AJAX 讀取最新資料,白天到沒事,晚上碰上 Web Server 排程進行 自動品管、資料庫備份、掃毒 時,可能會造成 AJAX 讀不到資料,以前下班會關閉展示電腦,上班才開展示電腦,所以一直沒碰上這問題,但是業主通知他們晚上不關電腦會出問題後,經過追蹤發現,當 Web Server 在忙的時候,AJAX 沒撈到資料並不會自動 timeout ,而是一直卡在那,時間久了就會跳出訊息盒,大概是「這個網頁的指令碼造成 Internet Explorer 執行速度緩慢」。

這個訊息盒要消掉可以參考下面兩個網址,但是消掉並不能改善 AJAX timeout ,所以必須自己搞 timeout ,這有機會再說,這篇重點在 vbscript。

http://support.microsoft.com/kb/175500/zh-tw

http://support.microsoft.com/kb/813827/zh-tw

 

原先是用 VBScript 寫的,VML 網頁有在 html head 中標記強制相容 IE6 ,因此在 IE11 仍然可以跑,但是若叫出開發工具,會發現 VBScript 全不見了。我印象中 IE11@Win7 仍然可以看到,但是在 IE11@Win8.1 卻是這張圖這樣:

偵錯時看不到 VBScript 清單

偵錯時看不到 VBScript 清單

若碰上這個狀況,要使用 [網際網路選項] > [進階]

啟用 IE 的指令碼偵錯功能

啟用 IE 的指令碼偵錯功能

把 [停用指令碼偵錯 (Internet Explorer)] 前面的勾勾移除即可。

重新整理該網頁,就可以看到 VBScript 出現在列表中了:

IE11 可以針對 VBSctipt 除錯了

IE11 可以針對 VBSctipt 除錯了

事實上,這樣只能勉強除錯,完整除錯仍要回到 IE10 以前版本。因為有以下原因:

1. VBScript 檔名無法顯示。

2. 我在英語版 IE11@Win7 x64 碰上無法顯示指定變數內容,但自動顯示的變數內容可正常看。

3. VBScript 錯誤可能無法正確攔截變成 IE11 錯誤。我在測試時,用了 window.setTimeout(函數名, 毫秒) ,事實上應該用 window.setTimeout(“函數名", 毫秒) ,而這個錯誤未被 IE11 攔截,反而變成跳出 VS2013 除錯 IE11 的畫面。

 

這篇只是介紹應急方案,正確方案當然是回去把 VBSctipt 全面改寫 Javasctipt 。

以前,我很自豪我跟 Bill 都是 Basic Programmer ,但自從 Bill 退休後,微軟就開始逐步封殺 VB ,先是 VBNET ,再來是 VSTO ,現在是 IE11 ,就不知道 10 年後 VB 還能不能存活於 Microsoft 中。

Categories: 工作點滴, 技術分享 | 發表留言

文章導覽

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: