我试图确定页面加载的客户端窗口大小,用于使用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