2008-12-27

Safari 和 ASP.NET Menu 控制項

早在 ASP.NET 剛推出之時就一直強調能夠適應不同的用戶端產出對應的 Markup Code, 可是沒想到 Menu 控制項在 Safari 卻出了問題, 看了一下產出的網頁原始碼, 發現產出的 HTML 不一樣, 當時的第一個直覺反應是想到 ASP.NET CSS Friendly Control Adapter 專案, 應該和它有關, 一定是套用到了不同的 ControlAdapter 才會產出不同的 HTML, 所以如果要解決這個的問題, 應該也可以採用和它相同的技巧才對!

找到 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers 資料夾底下的 mozilla.browser 檔案, 裡面明白的寫著

image

就因為那個 controlAdapter 導致 Safari 在產出 Menu 的 HTML 時不如預期, 解決的方法也很簡單, 只要在網站下新增一個 App_Browser 的資夾, 在裡頭新增一個叫 safari.browser 的檔案, 然後在裡頭再一次的 override 掉原來的設定就行了!

<browsers>
    <browser refID="Safari1Plus">
        <capabilities>
            <capability name="xml" value="true" />
        </capabilities>
        <controlAdapters>
            <adapter controlType="System.Web.UI.WebControls.Menu" adapterType="" />
        </controlAdapters>
    </browser>
</browsers>

keywords: safari, controlAdapter, asp.net, Menu

沒有留言: