我試圖確定頁面加載的客戶端窗口大小,用於使用c#創建位圖。從閱讀SO和其他地方,我知道一種方法將是:在頁面加載時從客戶端獲取Javascript值
- 編寫一個Javascript函數以獲取相關的值;
- 將這些存儲在隱藏字段中;
- 使用後面的代碼(c#)讀取值,然後用它做東西。
但是,我被執行序列絆住了,它在任何Javascript之前運行代碼,儘管我已經設置了<body onload...
來獲取和設置相關值。 (見下)
我知道我的代碼的其餘作品,因爲,當我執行時,頁面顯示單詞「by」和按鈕。然後,在點擊按鈕並重新加載頁面後,它現在可以突然讀取兩個隱藏值。
我的問題是,我如何才能讓我的C#的Page_Load代碼從客戶端得到這兩個隱藏價值,之前執行我的代碼的休息,而不需要像點擊一個按鈕,用戶操作?
我的頁面:
<body onload="getScreenSize()">
<form id="form1" runat="server">
<input type="hidden" name="hiddenW" ID="hiddenW" runat="server" />
<input type="hidden" name="hiddenH" ID="hiddenH" runat="server" />
<script>
function getScreenSize() {
var myW = document.getElementById("hiddenW");
myW.value = window.innerWidth;
var myH = document.getElementById("hiddenH");
myH.value = window.innerHeight;
}
</script>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
後面的代碼:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(hiddenW.Value+" by " +hiddenH.Value);
}
}
在第一次運行時(我需要這些值),這表明
和我點擊後該按鈕,它證明了Javascript的工作原理:
的問題,然後,是怎麼做的,我得到我的Page_Load代碼的其餘部分運行,這樣我就可以直接進入生成和顯示我的形象之前,這些價值觀?
使用domready中的事件,它觸發窗口加載之前,所有你需要的數據是可用的(窗口高度等)..更多關於此這裏:http://www.javascriptkit.com/ dhtmltutors/domready.shtml –
請參閱我已更新我的答案以顯示如何使用JQuery執行此操作 – P5Coder