Window.Load不在asp.net PostBack上工作

时间:2014-08-20 15:25:10

标签: c# jquery asp.net postback

我正在尝试使用JQuery获取图像的高度/宽度。 在使用$(window).load完全加载图像之前,它将无法工作。 在执行asp.net UpdatePanel时,事件与元素解除绑定。我尝试使用ScriptManager.RegisterStartupScript调用Javascript函数再次绑定所有事件,但它不会运行$(window).load。请帮忙。

外部JS代码

$(window).load(function () {
    WindowLoad();
});

function WindowLoad() {
    alert($("#test").width());
}

C#代码

protected void Page_PreRender(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "WindowLoad" + DateTime.Now.Ticks, "WindowLoad();", true);
    }
}

protected void Previous_Click(Object sender, ImageMapEventArgs e)
{
    String value = e.PostBackValue;
    if (value == "test")
    {
        imgTest.ImageUrl = IMAGEPATH;
    }
}

首次加载页面时$(window).load获取图像的高度/宽度,因为它等待图像在显示宽度/高度之前完成加载到页面上。

当你点击图像路径时,它会进行部分回发。当发生这种情况时,JS与元素解除绑定。 Previous_Click将首先运行,然后Page_PreRender在元素上注册JS。这是我需要确保再次获得图像的高度/宽度的地方。所以JS可以做一些重新计算。在部分回发上,结果最终为0.我注意到UpdatePanel需要一段时间来更新图像路径,因此它们可能有一些原因导致结果变为0,但我认为UpdatePanel将完成加载在尝试运行WindowLoad函数之前先处理所有内容。

0 个答案:

没有答案