2012-12-24 32 views
8

我最近在ASP.NET Web應用程序中注意到,如果我將我的用戶代理設置爲空字符串(使用FireFox插件來欺騙用戶代理),那麼ASP.NET不會生成執行回發所需的JavaScript。更具體地說,如果你嘗試從你的javascript調用__doPostBack(a, b)函數,你會得到一個錯誤,說該函數是未定義的。強制ASP.NET爲所有用戶代理生成JavaScript

據我所知,每個瀏覽器都有一個用戶代理,所以這不會經常出現,但問題的實質依然存在:有些情況下,無法識別或格式錯誤的用戶代理可能導致Web應用程序無法使用如果你依靠回發。

這與此問題類似:ASP.net not generating javascript for some User Agents,但如果我正在閱讀它,它看起來像你會解決每個無法識別的用戶代理案例,並掩蓋它作爲另一個瀏覽器。我對個人用戶代理的關注較少,而且更重要的是,某些用戶代理無法使用我的應用程序,我不會知道它,因爲錯誤發生在JavaScript而不是服務器上。

有誰知道一種方法,我可以強制ASP.NET始終生成所需的JavaScript?

+0

讓您的用戶實際遇到這個問題?如果沒有,那麼我會問你的用戶是否遇到過其他問題。 –

+0

@John - 沒有人報告過它,但我們的網絡應用程序處理電子商務,所以遇到問題的普通用戶通常不會經歷與聯繫人的麻煩,他們只需轉到競爭對手的網站。我們還剛剛推出了一家手機商店,邀請全新的可能用戶代理商聯盟,我想避免儘可能多的問題。 – Adam

+1

我希望你記錄你的未處理的異常,然後。否則,當你的競爭對手花費時間改進他們的網站時,你有時間花時間修復你的客戶沒有遇到的問題。 –

回答

4

如果設置爲空的用戶代理,或者如果你使用一個未知的用戶代理字符串,然後asp.net讀取Browsers目錄Default.browser文件,那裏你可以定義如何你想採取行動的情況下本。

,你需要改變,並在此情況下,該行使用JavaScript是那些:

 <capability name="jscriptversion"  value="5.6" /> 
     <capability name="javascript"   value="true" /> 
     <capability name="javascriptversion" value="1.5" /> 

在默認情況下,的JavaScript行,如果。我喜歡在這裏發表評論,我不確定你是否真的需要改變它,如果有人欺騙用戶代理,讓它做。如果他喜歡你的網站並且需要使用它,那麼最好讓你知道如何處理他使用的瀏覽器。另一方面,如果可以的話,你必須小心,你的網站甚至可以用JavaScript來工作,至少對於你所做的大部分操作來說。

最好避免鏈接按鈕(使用_doPostBack),並使用回發按鈕爲例。我知道GridView和其他使用也_doPostBack分頁......好吧,但更好的一個好網站已經能夠工作,即使出javascript。

一些類似的問題:
__doPostBack is undefined on DotNetNuke website for IE 10

和這個博客:Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position

相關問題