2

サーバー側からユーザー画面の解像度にアクセスしたい。このために私はasp hiddenコントロールを持っています:

<asp:HiddenField runat="server" ID="hdnScreenResolution" />

実際にページにレンダリングするもの:

<input type="hidden" name="ctl00$MainContent$hdnScreenResolution" id="MainContent_hdnScreenResolution" />

javascript関数を使用して値を挿入します。

$(document).ready(function () {
   var width = screen.width;
   var height = screen.height;

   var hiddenScreenResolution = document.getElementById('<%= hdnScreenResolution.ClientID
    %>'); 
   hiddenScreenResolution.value = "asass";
});

そしてそれはページのソースコードにあります:

       $(document).ready(function () {
            var width = screen.width;
            var height = screen.height;

            var hiddenScreenResolution = document.getElementById('MainContent_hdnScreenResolution'); 
            hiddenScreenResolution.value = "asass";
        });

サーバー側では、次の隠し値を確認しますPage_Load()

protected void Page_Load(object sender, EventArgs e)
{
    var hiddenValue = hdnScreenResolution.Value;
}

しかし、値は空の文字列のようです。jqueryを使用しても役に立ちません。

直接挿入:document.getElementById('<%= hdnScreenResolution.ClientID%>')。value = "asdasd"; 助けにならない。

何が問題になる可能性がありますか?

PS画面の解像度を把握するにdocument.readyは遅すぎると思います。そして、ページがアンロードされた後にjavascriptが起動します。したがって、最初の要求でそれをキャッチするための変更はありません。

答えを楽しみにしています。

4

1 に答える 1

1

Page_Loadhtmlがクライアントに送信されてjQueryが実行される前にサーバー側が呼び出されるdocument.readyため、javascriptを使用してクライアントに割り当てる前に値にアクセスし、空にする必要があります。

クライアントからサーバーに値を送信する必要があります。サーバーで画面座標値を取得するためのポストバックを行うためにjQueryajaxを使用できます。

何が起こっているかを確認するには、asp:buttonを追加し、サーバー側のイベントの非表示フィールド値にアクセスします。

于 2013-01-10T12:53:13.820 に答える