2018年10月18日 星期四

asp.net menu control 在 Chrome 不正常顯示

asp.net menu control not rending correctly in safari (Chrome 亦同)
https://stackoverflow.com/questions/277197/asp-net-menu-control-not-rending-correctly-in-safari

 使用 ASP.NET 的 web-page 開發模式,所寫的下拉式功能選單,正常運作應如下圖。



這在最早 IE 8 出來時,就會發生選單變成一片空的情形,解決辦法是,開啟它的相容性檢視。這真的是很可笑的一件事,一般所理解的相容性,是針對別家的產品,只有微軟才跟自家產品相容,絕不可能和別人相容。所以,使用 Chrome 或 Firefox 當然也不會是正常的。

這個的解決辦法,比較簡單。只要加上 CSS,即可不用開啟相容性檢視。因為依據新的標準所開發的網頁,在相容性檢視下,根本是個災難啊。修正的 CSS 如下
------------------------------------
<style type ="text/css" >
.IE8Fix {
           /* z-index: 1000; */
position:relative; 
z-index:auto;
        }
</style>

<asp:Menu ID="Menu1" runat="server" BackColor="White" BorderColor="#404040" BorderStyle="Double"
                        BorderWidth="1px" ForeColor="Black" Orientation="Horizontal" DynamicHorizontalOffset="1"
                        DynamicMenuStyle-CssClass="IE8Fix">
                        <Items>
                            <asp:MenuItem NavigateUrl="~/WebMessage.aspx" Text="訊息公告" Value="訊息公告"></asp:MenuItem>
----------------------------

然後,還有更為詭異的情形發生,相同的程式,放在不同的 server,然後用同一 Chrome 瀏覽器開啟,一個正常,另一個不正常,如下圖。然後,Firefox 卻都同樣正常。真是徵軟的品質,一流可靠啊。



經過交叉比對,發現不正常的問題所在是,有雨個 resource 的 javascript 沒有送出。如下圖的第3, 4 筆資料。


這雨個 URL 大概長的像這樣 https://gra206.aca.ntu.edu.tw/ntuweb/WebResource.axd?d=yd3pzel2CBzpd4_iRf8lp4jYXHFvMItjSP_mFAUgHDN2Xt-sDhIN1QcV6aA54vkDhshCSa-3UvCesVfgCrqBNUgr5io1&t=634964077412225000。只是,要不要送出這兩個檔,開發者無從決定,完全視系統高興與否。

就加上 'missing resource javascript'  來 Google 一下,還真找到解決辦法。如前述網址所載。還真是詭異的解決辦法,參考網頁是針對 Safari,就把它改成 chrome 就好。
----------------------------
If Request.ServerVariables("http_user_agent").IndexOf("Chrome", StringComparison.CurrentCultureIgnoreCase) <> -1 Or Request.UserAgent.Contains("AppleWebKit") Then
        Request.Browser.Adapters.Clear()
        Page.ClientTarget = "uplevel"
End If
----------------------------

微軟的一貫政策是,過期產品一概不支援,也沒有詳細資料可供參考,能否解決全靠運氣。我只是想讓它正常運作,再拖一陣子,儘快把程式轉成 PHP。

沒有留言:

張貼留言

網誌存檔