gpt4 book ai didi

c# - 在页面加载时从客户端获取 Javascript 值

转载 作者:行者123 更新时间:2023-11-28 19:59:06 26 4
gpt4 key购买 nike

我正在尝试确定页面加载时的客户端窗口大小,以用于使用 C# 创建位图。通过阅读 SO 和其他地方,我知道一种方法是:

  1. 编写一个 Javascript 函数来获取相关值;
  2. 将它们存储在隐藏字段中;
  3. 使用背后的代码 (c#) 读取值,然后对其进行操作。

但是,即使我设置了<body onload...,我也会被在任何Javascript之前运行代码的执行序列所困扰。获取和设置相关值。 (见下文)

我知道我的其余代码可以工作,因为当我执行时,页面会显示单词“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);
}

}

第一次运行时(当我需要这些值时),它显示

enter image description here

点击按钮后,证明 Javascript 有效:

enter image description here

接下来的问题是,如何在运行其余的 Page_Load 代码之前获取这些值,以便我可以直接生成并显示图像?

最佳答案

在 C# Page_Load() 执行之前无法获取客户端窗口大小,因为页面是在 C# 代码执行完成后呈现给客户端的。
窗口大小可能会在页面加载期间发生变化,因此您必须在页面加载完成后才能获取窗口大小。

解决方案:
页面完全加载后,您可以使用ajax将值发送到后端。

在获得正确的值后,您可以使用 java 脚本进行回发,如下所示:
jQuery:

$(function() {
var width = window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth;
var height = window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight;
$('#hdn_width').val(width);
$('#hdn_height').val(height);
$('#your_form').submit();
});

C#:

protected void Page_Load(object sender, EventArgs e)
{
try
{
if (IsPostBack)
{
// Use hdn_width and hdn_height here
}
}
catch (Exception ex)
{
}
}

关于c# - 在页面加载时从客户端获取 Javascript 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com