忽然遇到個很奇怪的BUG,翻頁控件,其餘瀏覽器一切正常,IE沒法翻頁,會提示 '__doPostBack' is undefined web
後來搜索發現:api
[原文發表地址] Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position
[原文發表時間] 2009-05-20 01:41瀏覽器
瀏覽器版本號繼續升級過程中。IE9誕生了,IE10 也即將問世,火狐5和6已經發布了,而7和8也快出現了,Opera已經到了11,Chrome還在繼續,我也不知道,應該總在14和50之間吧。無論怎樣,不出意外版本號應該都會達到99。app
在跟隨.NET 2.0和.NET 4一塊兒發布的瀏覽器定義文件中有一個錯誤,也就是它們保存相當一部分瀏覽器版本的定義。可是瀏覽器的有些版本(好比IE10)再也不在這個範圍之內。所以,ASP.NET把它們看作是未知的瀏覽器,默認降級處理,這樣就會給用戶帶來不便,好比不支持JavaScript特性。spa
若是你想親自看看,那就創建一個全新的空白的網站(能夠在Visual Studio 2010中試一下),添加一個須要JavaScript回調的控件(例如:<asp:LinkButton>),然後用IE9來運行站點(這是可行的)。再用IE10來運行(這就不行了)。查看一下頁面源代碼,比較一下發送到兩個版本的瀏覽器的HTML和JavaScript。.net
火狐5也遇到上述類似的問題,也就是無法檢測在瀏覽器中使用JavaScript重定位滾動條。這與爲Web Form 頁面而設的MaintainScrollbackPositionOnPostBack屬性不符。firefox
這些「無法檢測」錯誤在ASP.NET 2和ASP.NET4中都影響了Web Form頁面。若是你使用的是ASP.NET Web頁面,或者是ASP.NET MVC,但沒有用瀏覽器對象去檢測JavaScript支持,那你就再也不受影響的範圍內。component
修復orm
有兩種修復這個錯誤的方法:一個就是整體修復,另外一個就是單獨修復每個站點。server
整體修復
我們正準備發布一個Hotfix來修復這些問題,你能夠通過KB文章來獲取。這些有修復 KB在一週內就會公佈了。它們能夠再一部機器上永久解決全部頁面瀏覽器檢測問題。這些修復也會在以後版本的framework中運用,最終會成爲一個Windows更新。
· .NET 4 - http://go.rritw.com/support.microsoft.com/kb/2600088
·
· .NET 2.0 - http://go.rritw.com/support.microsoft.com/kb/2600100
修復所作的就是更新IE.瀏覽器和火狐瀏覽器的文件(路徑:\Windows\Microsoft.NET\Framework\<version>\Config\Browsers), 加上最新和未來已定義的版本號。不會影響其餘任何東西。
單站點修復
若是你無法訪問整部機器,或者只想更新單一的項目,那就通過NuGet安裝App_BrowsersUpdate包吧。然後你在方案瀏覽器(Solution Explorer)中的頁面結構就會如右圖所示。注意NuGet使用的是.NET 4,因此對於那些只有.NET 2的系統來說,你就還要獲取 ZIP文件,手動將新瀏覽器文件添加至App_Browsers目錄。
· .NET 4 瀏覽器更新 NuGet 包 - http://nuget.org/List/Packages/App_BrowsersUpdate
· 安裝包 App_BrowsersUpdate
· .NET 2.0 瀏覽器更新 NuGet 包 - http://nuget.org/List/Packages/App_BrowsersUpdate.net20
· 安裝包 App_BrowsersUpdate.net20
· 注意NuGet是VS2010特定版的,因此若是你沒有nuget.exe和.NET 4,你也能夠手動地從這個zip文件中直接複製.NET 2的更新瀏覽器文件到~\App_Browsers.
要修復這個問題更新整部機器更可取。
總結
· ASP.NET 可能無法辨識出一些瀏覽器的最新版本,還會經常把它們看作是低級的瀏覽器。(也就是: 不支持JavaScript。)
· 修復是指更新瀏覽器定義文件。
· 你能夠安裝整體修復或者單一修復某些項目。
· Hotfix會在幾周內問世。KB文章會屆時提供下載鏈接。
· 這些文件也會是之後.NET 4修復的一部分,預期也會在2012年1月通過Windows更新推送給用戶。
· 下一版本的.NET framework會包括全部的更新文件。
我上傳了已經更新的firefox.browser和ie.browser文件,,這些文件預計會在下一版本的ASP.NET中添加。文件和源代碼在個人BitBucket repo中。若是你想了解詳情,能夠去看看。