[ASP.NET]解決Menu控制項在Chrome, Safari瀏覽器不正常的問題

小喵自己有設計一個用來蒐集超連結,類似我的最愛的程式,一直以來都是用IE來瀏覽,也沒看到什麼問題,不過最近開始在測試不同的瀏覽器,而目前眾多瀏覽器各家爭鳴的時候,有些瀏覽器就是比較特別,需要特別的處理才能夠正常運作。其中Menu控制項就是一個特別的例子,在Chrome與Safari這兩個瀏覽器不太正常。

緣起

小喵自己有設計一個用來蒐集超連結,類似我的最愛的程式,一直以來都是用IE來瀏覽,也沒看到什麼問題,不過最近開始在測試不同的瀏覽器,而目前眾多瀏覽器各家爭鳴的時候,有些瀏覽器就是比較特別,需要特別的處理才能夠正常運作。其中Menu控制項就是一個特別的例子,在Chrome與Safari這兩個瀏覽器不太正常。

 

解決方式:App_Browsers

要解決這個問題其實蠻簡單的,首先要在自己的專案中建立一個【App_Browsers】的資料夾(可以透過VS裡面新增ASP.NET資料夾來做),裡面建立一個檔案,命名為【Chrome.browser】,而它的內容是一個XML的格式,內容如下:


<browsers>
	<browser refID="safari1plus">
		<controlAdapters>
			<adapter controlType="System.Web.UI.WebControls.Menu" adapterType="" />
		</controlAdapters>
	</browser>
</browsers>

這樣就可以在Chrome與Safari看到Menu控制項正常的運作了。

 

App_Borwsers

這讓小喵好奇App_Browser這個資料夾到底是做啥用的。小喵引用MSDN的解釋:包含瀏覽器定義 (.browser 檔),ASP.NET 會使用這些檔案來辨識個別瀏覽器並判斷它們的功能。因此當有某些功能要依照不同的瀏覽器做特別的處理時,可以透過這個特別的資料夾,裡面定義好.browser檔,來達到我們想要的需求,保哥有個例子是:要讓純文字的瀏覽器可以瀏覽UTF-8格式的ASP.NET網頁(如何讓 Lynx 純文字瀏覽器讀取 UTF-8 的 ASP.NET 網頁),以利一些身障朋友可以無障礙的使用。

進一步的訊息,小喵留下MSDN的說明連結做個筆記,未來有需要的時候再來翻翻:

ASP.NET的應用程式資料夾用途說明

瀏覽器定義檔結構描述 (browsers 項目)

HOW TO:在 ASP.NET Web 網頁中偵測瀏覽器類型


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat