none
Window Sizes RRS feed

  • Вопрос

  • Здравствуйте!

    Я хочу узнать размеры окна броузера, в котором запускается мое приложение.

    Для этого я использую Javascript и ASP.NET:

    <script type="text/javascript">
        $(document).ready(function () {
            $("#width1").val() = $(window).width();
            $("#height1").val() = $(window).height();
        })
    </script>
        <asp:HiddenField ID="width1" runat="server"  />
        <asp:HiddenField ID="height1" runat="server" />      
    т.е. скрытые поля width1 и height1 должны получать значения ширины и  высоты окна, и к ним я могу обратиться в коде
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load, Me.Load   If IsPostBack Then
      dim w as integer = Val(Request("width1"))
      dim h as integer = Val(Request("height1"))  '' 
    End If
    End Sub
    Но значения width.Value и height.Value у меня всегда равны "", соответственно w=0 и h=0, даже когда IsPostBack=True.
    Чего мне не хватает? И как вызвать (при помощи Javascript) и когда перезагрузку окна ( чтобы IsPostBack=True)?


    10 января 2014 г. 8:35

Ответы

  • "редирект куда? На эту же страницу?" - да, на ту же.

    "Вы  можете рпивести код?" - так примерно:

    using System;
    using System.Web;
    
    namespace WebApplication1
    {
      public class Global : HttpApplication
      {
        void Application_Start(object sender, EventArgs e)
        {
    
        }
    
        void Application_BeginRequest(object sender, EventArgs e)
        {
          if(Request.Cookies["WindowSize"] == null)
          {
            HttpCookie cookie = new HttpCookie("WindowSize");
            cookie.Path = "/";
            Response.Cookies.Add(cookie);
          }
        }
    
        void Application_End(object sender, EventArgs e)
        {
    
        }
    
        void Application_Error(object sender, EventArgs e)
        {
    
        }
      }
    }

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
      <script src="Scripts/jquery-1.8.2.js" type="text/javascript"></script>
      <script src="Scripts/jquery.cookie.js" type="text/javascript"></script>
    </head>
    <body>
      <form id="form1" runat="server">
        <div>
          <asp:Button ID="Button1" runat="server" Text="Button" />
        </div>
      </form>
      <script type="text/javascript">
        if ($.cookie('WindowSize') == '') {
          $.cookie.raw = true;
          var cookieValue = 'width=' + $(window).width() + '&' + 'height=' + $(window).height();
          $.cookie('WindowSize', cookieValue, { path: '/' });
          window.location.replace(window.location.href);
        }
      </script>
    </body>
    </html>
    

    using System;
    
    namespace WebApplication1
    {
      public partial class WebForm1 : System.Web.UI.Page
      {
        public void Page_PreInit(object sender, EventArgs e)
        {
          if(Session["WindowSize"] == null)
          {
            if(Request.Cookies["WindowSize"] != null)
            {
              int width, height;
    
              if(int.TryParse(Request.Cookies["WindowSize"]["width"], out width)
                  && int.TryParse(Request.Cookies["WindowSize"]["height"], out height))
              {
                var windowSize = new WindowSize();
    
                windowSize.Width = width;
                windowSize.Height = height;
    
                Session["WindowSize"] = windowSize;
              }
            }
          }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
          if(Session["WindowSize"] != null)
          {
            var windowSize = (WindowSize)Session["WindowSize"];
          }
        }
      }
    
      public class WindowSize
      {
        public int Height { get; set; }
        public int Width { get; set; }
      }
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа Medet Tleukabiluly 11 января 2014 г. 14:31
    • Помечено в качестве ответа YatajgaEditor 14 января 2014 г. 18:24
    11 января 2014 г. 9:11
    Модератор
  • У вас там скрипт неправильный:

    <script type="text/javascript">
        $(document).ready(function () {
          $("#width1").val($(window).width());
          $("#height1").val($(window).height());
        })
    </script>

    И ещё ваш код будет работать только при обратных отправках. В противном случае придётся делать редирект и хранить размер экрана в сессии.


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaEditor 14 января 2014 г. 6:20
    • Помечено в качестве ответа YatajgaEditor 14 января 2014 г. 18:24
    10 января 2014 г. 12:05
    Модератор

Все ответы

  • Какие контролы вы используете для этих двух полей?

    Сделаем содержимое сообщества лучше, вместе!

    10 января 2014 г. 11:20
    Модератор
  • Извините, я поторопился, фразу следует читать так:

    значения width1.Value и height1.Value у меня всегда равны "".

    Но это не меняет сути дела

    10 января 2014 г. 11:55
  • У вас там скрипт неправильный:

    <script type="text/javascript">
        $(document).ready(function () {
          $("#width1").val($(window).width());
          $("#height1").val($(window).height());
        })
    </script>

    И ещё ваш код будет работать только при обратных отправках. В противном случае придётся делать редирект и хранить размер экрана в сессии.


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа YatajgaEditor 14 января 2014 г. 6:20
    • Помечено в качестве ответа YatajgaEditor 14 января 2014 г. 18:24
    10 января 2014 г. 12:05
    Модератор
  • А в целом использовать такую технику для вёрстки не очень правильно. Современные технологии вёрстки позволяют обходиться без этого.

    Сделаем содержимое сообщества лучше, вместе!

    10 января 2014 г. 12:06
    Модератор
  • Я объясню, почему мне это надо. У меня в форме используется контрол "panel",  и его ширину и высоту я могу задать в коде, но для этого я должен знать соответствующие параметры окна. Я хочу, чтобы размеры этого контрола ("panel") были чуть меньше, чем окно, а окна браузера на разнчх компьютерах - разные
    10 января 2014 г. 12:09
  • А в целом использовать такую технику для вёрстки не очень правильно. Современные технологии вёрстки позволяют обходиться без этого.

    Сделаем содержимое сообщества лучше, вместе!


    Вы сожете дать ссылку на современные технологии вёрстки ? Буду очень благодарен
    10 января 2014 г. 12:48
  • Да, вот он. Вот этот раздел вам будет полезен.

    Сделаем содержимое сообщества лучше, вместе!

    10 января 2014 г. 12:51
    Модератор
  •  В противном случае придётся делать редирект

    редирект куда? На эту же страницу?

    >и хранить размер экрана в сессии

    Вы  можете рпивести код?

    10 января 2014 г. 13:50
  • "редирект куда? На эту же страницу?" - да, на ту же.

    "Вы  можете рпивести код?" - так примерно:

    using System;
    using System.Web;
    
    namespace WebApplication1
    {
      public class Global : HttpApplication
      {
        void Application_Start(object sender, EventArgs e)
        {
    
        }
    
        void Application_BeginRequest(object sender, EventArgs e)
        {
          if(Request.Cookies["WindowSize"] == null)
          {
            HttpCookie cookie = new HttpCookie("WindowSize");
            cookie.Path = "/";
            Response.Cookies.Add(cookie);
          }
        }
    
        void Application_End(object sender, EventArgs e)
        {
    
        }
    
        void Application_Error(object sender, EventArgs e)
        {
    
        }
      }
    }

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title></title>
      <script src="Scripts/jquery-1.8.2.js" type="text/javascript"></script>
      <script src="Scripts/jquery.cookie.js" type="text/javascript"></script>
    </head>
    <body>
      <form id="form1" runat="server">
        <div>
          <asp:Button ID="Button1" runat="server" Text="Button" />
        </div>
      </form>
      <script type="text/javascript">
        if ($.cookie('WindowSize') == '') {
          $.cookie.raw = true;
          var cookieValue = 'width=' + $(window).width() + '&' + 'height=' + $(window).height();
          $.cookie('WindowSize', cookieValue, { path: '/' });
          window.location.replace(window.location.href);
        }
      </script>
    </body>
    </html>
    

    using System;
    
    namespace WebApplication1
    {
      public partial class WebForm1 : System.Web.UI.Page
      {
        public void Page_PreInit(object sender, EventArgs e)
        {
          if(Session["WindowSize"] == null)
          {
            if(Request.Cookies["WindowSize"] != null)
            {
              int width, height;
    
              if(int.TryParse(Request.Cookies["WindowSize"]["width"], out width)
                  && int.TryParse(Request.Cookies["WindowSize"]["height"], out height))
              {
                var windowSize = new WindowSize();
    
                windowSize.Width = width;
                windowSize.Height = height;
    
                Session["WindowSize"] = windowSize;
              }
            }
          }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
          if(Session["WindowSize"] != null)
          {
            var windowSize = (WindowSize)Session["WindowSize"];
          }
        }
      }
    
      public class WindowSize
      {
        public int Height { get; set; }
        public int Width { get; set; }
      }
    }


    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа Medet Tleukabiluly 11 января 2014 г. 14:31
    • Помечено в качестве ответа YatajgaEditor 14 января 2014 г. 18:24
    11 января 2014 г. 9:11
    Модератор