最近做项目,用到了微软的ajax框架,发现updatepanel在给我们带来很大方便的同时也给我们造成了不小的麻烦.
这一般是由 JS 脚本的冲突导致的. 检查 body 标签并寻找 onload 属性. 例如:
对这个问题的快速修正就是添加
有很多开源的js框架回合updatepanel产生冲突导致失效或者直接崩溃.
这回书讲的就是当updatepanel和lightbox相遇时该怎么办!
这次要做一个相册,用到了updatepanel做不刷新的相册翻页,但是相册的展示效果是用lightbox这个开源框架实现的.结果做完了以后才发现,只要updatepanel一更新lightbox的效果就会消失,在网上找了半天也没见到过同样问题的人.看来就我一个人没事用这两个东西.呵呵.还好解决了.下面说一下解决的方法,希望可以帮助到大家.
其实也非常简单,稍微测试一下就会发现updatepanel回发回来的数据内容是对的."rel='lightbox'"这个标签还在,所以可以肯定不执行的原因就是出在了js和updatepanel的冲突上,去看了一下lightbox的帮助文档,发现一个类似的问题
完全不工作. 图片在新窗口中打开. 出什么问题了?<body onload="MM_preloadImages(‘/images/menu_on.gif’)…;">
对这个问题的快速修正就是添加
initLightbox()
到 onload 属性, 如下:<body onload="MM_preloadImages(‘/images/menu_on.gif’)…;initLightbox()">
于是我就做了个实验,每次在updatepanel更新的时候在页面注册一下initLightbox()这个函数
ScriptManager.RegisterClientScriptBlock(
this
.Page,
this
.GetType(),
"
TestAlert
"
,
"
initLightbox();
"
,
true
);
结果问题迎刃而解,在运行不管如何更新updatepanle,lightbox都可以正常执行了.具体因为什么失效没有深入研究,呵呵,因为我比较懒.第一次写文章有点乱,大家凑合看吧.