我正在尝试使用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函数之前先处理所有内容。