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;
}
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;
}