How To Get Customer's Screen Pixel.

1. Page_Init -> Page_Load -> Page_Render -> Javascript code running...

2. Take a example for reference, to avoid refreshing each access, you may keep them in Session or Cookies...
        /// <summary>
        /// Initializes the range of tree.
        /// The first Page Load would not run javacript, so use the second time to make it.
        /// Page_Init -> Page_Load -> Page_Render -> Javascript runing.
        /// </summary>
        /// <param name="height"></param>
        /// <param name="width"></param>
        /// <param name="formName"></param>
        /// <Author>Diego Cheng.</Author>
        /// <CreationDate>2007-5-10.</CreationDate>
        public static bool GetScreenPixel(ref int height, ref int width, string formName, HtmlGenericControl body)
        {
            bool result = false;
            width = 0;
            height = 0;

            Button getScreenParamButton = new Button();
            HtmlInputHidden screenHeight = new HtmlInputHidden();
            screenHeight.ID = "screenHeight";
            screenHeight.Name = "screenHeight";
            HtmlInputHidden screenWidth = new HtmlInputHidden();
            screenWidth.ID = "screenWidth";
            screenWidth.Name = "screenWidth";

            if (!body.Page.IsPostBack)
            {
                body.Page.FindControl(formName).Controls.Add(screenHeight);
                body.Page.FindControl(formName).Controls.Add(screenWidth);
                body.Page.FindControl(formName).Controls.Add(getScreenParamButton);
                string content = //"<script>"+
                    //"funtion Init(){"+
                    "document." + formName + ".screenHeight.value = window.screen.height;" +
                    "document." + formName + ".screenWidth.value = window.screen.width;";// +
                //"}"+
                // "</script>";
                // The first two params are meaningless.
                body.Page.ClientScript.RegisterOnSubmitStatement(typeof(HtmlInputHidden), "diego", content);
                // Fire the page to post back again.
                body.Attributes.Add("onLoad", "document.all." + getScreenParamButton.ClientID + ".click();");
            }
            else
            {
                body.Attributes.Remove("onLoad");

                // The next disposals are useless indeed.
                #region Contols disposal
                if (body.Page.FindControl(formName).Controls.Contains(getScreenParamButton))
                {
                    body.Page.FindControl(formName).Controls.Remove(getScreenParamButton);
                    getScreenParamButton.Dispose();
                }
                if (body.Page.FindControl(formName).Controls.Contains(screenHeight))
                {
                    body.Page.FindControl(formName).Controls.Remove(screenHeight);
                    screenHeight.Dispose();
                }
                if (body.Page.FindControl(formName).Controls.Contains(screenWidth))
                {
                    body.Page.FindControl(formName).Controls.Remove(screenWidth);
                    screenWidth.Dispose();
                }
                #endregion
            }
            string screenH = body.Page.Request.Form["screenHeight"];//.Value.Trim();
            string screenW = body.Page.Request.Form["screenWidth"];//.Value.Trim();

            if (screenH != null && screenH.Trim().Length > 0)
            {
                result = true;
                height = int.Parse(screenH);
                width = int.Parse(screenW);
            }
            return result;
        }

posted on 2007-05-10 16:03  Diego  阅读(220)  评论(0编辑  收藏  举报