今天同事回報一個問題。

我之前寫的控件,會Render一段<script>(ASP.NET 1.1時代寫的,當時年紀小,沒宣告language也沒宣告type)。同事在<head>區加入了一段VBScript後,VBScript執行正常,跑到後方<script>中的Javascript時IE就出錯了。

由錯誤訊息看起來,應是IE遇到第一個<script> Block是VBScript,就把預設Client-Side Script Language設成VBScript,導致沒加註type/language的Script Block也被當成VBScript解讀。在之前處理木馬問題時,我們就見識過這個自作聰明的特性,而在HTML 4.01的規格之後才能強制宣告Client-Script Default Language。

所以以下的HTML在IE裡是會出錯的。

<html><head>
<script type="text/vbscript">
MsgBox "Test1"
</script>
<script>
alert("Test2");
</script>
</head><body>
Mixed Client-Script Language Test
</body></html>

要怎麼解決? 改控件在<script>上加註type是比較斧底抽薪的正解;如果想鋸箭,在VBScript Block的前端插個隊,再塞一個Javascript Block先佔先鸁,也是可行的。


Comments

Be the first to post a comment

Post a comment