2011年9月23日

IE8相容性模式問題

近期一個專案是以Visual Studio 2010開發ASP.NET網站,在套用版面及CSS樣式過程中,皆直接使用Visual Studio的[在瀏覽器檢視功能],以IE8檢視版面並進行修正,經過一番折騰,內容顯示終於跟設計稿相去不遠,但將網站佈署至IIS後,再以IE8檢視時,XD,怎麼有種七月半的感覺(版面破相了XD),請教Google神,獲得的解答是IE8相容性模式問題。
若HTML網頁沒有定義DOCTYPE要以何種模式作呈現,將會採用Quirks模式。
Visual Studio的[在瀏覽器檢視功能]似乎是以IE8標準模式作呈現,故將網頁定義為IE8標準模式,即可解決該問題。
  • 作法可參考以下網址的說明:
    • http://tsuozoe.pixnet.net/blog/post/24804436-internet-explorer-8
    • http://msdn.microsoft.com/zh-tw/library/cc817570.aspx
  • 也可透過程式碼,進行網頁定義:
  • protected override void OnPreInit(EventArgs e)
    {
        Response.AddHeader("X-UA-Compatible", "IE=8");
        base.OnPreInit(e);
    }
    

2011年9月21日

Update Panel Scrolling 問題

  • 一般以ASP.NET開發的網頁,若需在postback後,仍保持原本scrolling的位置,可於Page標籤加入MaintainScrollPositionOnPostback="true"屬性,即可解決。
  • <%@ Page Language="C#" AutoEventWireup="true" CodeFile="FindLocation.aspx.cs" Inherits="FindLocation" MaintainScrollPositionOnPostback="true" %>
    
  • 但若Scrolling的容器(ex:div)位於Update Panel內,則上述設定將無法讓Scrolling保持原有位置,解決方法如下:
  • 於ScriptManager標籤後加入以下JavaScript程式碼
      <asp:ScriptManager ID="ScriptManager" runat="server">
        </asp:ScriptManager>
        <script type="text/javascript">
            var xPos, yPos;
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);
            function BeginRequestHandler(sender, args) {
                xPos = $get('gvDiv').scrollLeft; //gvDiv請更換成適合的ID名稱
                yPos = $get('gvDiv').scrollTop;
            }
            function EndRequestHandler(sender, args) {        
                $get('gvDiv').scrollLeft = xPos;
                $get('gvDiv').scrollTop = yPos;
            }
         </script>
    
參考來源:http://forums.asp.net/t/1156877.aspx/2/10

FLEX嵌入HTML時,HTML元素無法輸入中文問題

  • 解決方法:
  • 在指定為Application的mxml頁面,加入監聽MouseEvent.ROLL_OUT事件,相關程式碼如下:
    
    vc.addEventListener(MouseEvent.ROLL_OUT, setSRF); //vc請自行修改成合適的ID名稱
    
    private function setSRF(event:MouseEvent):void{ 
         if(Capabilities.hasIME){ 
              IME.enabled=true; 
              IME.conversionMode="CHINESE"; 
         } 
    }
    

參考來源:http://blog.csdn.net/vipliyaohua/article/details/6586457