easyui踩坑一:window组件使用ajax要小心
·
easyui的window组件有坑
window组件是easyui中很使用频率很高的东东,也比较好用。
官方的使用说明是使用
我在使用之前也百度过相关使用说明,90%的使用方法是在窗口的confent属性中套用一个iframe标签,在iframe标签的src属性装载窗口内容页面。本来这没什么,也能用。
但官方demo给出的ajax使用方法是href属性加载页面,为毛大部分人都不使用呢?
对于一个强迫症患者来说,这个问题的存在让我感觉浑身长刺啊,DLLM(粤骂)。
为了拨刺,不得不花点心思了,咳一下,记录一下分析结果。
官方demo的方法存在的问题
使用windowr的href属性载入页面,是使用ajax异步方法载入,这样会导致几个问题:
- 被载入的页面会过滤掉< body >以外的内容,即,被载入的页面从< !DOCTYPE html>到< body>之间的内容是无效的,写在在这里面的代码,如css、js、link标签等都会作废,如果你的前端是从别的框架移植到easyui的,很大机率会出问题。
- ajax载入内容嘛,载入后就变成父页面内容了,以前那种子页面.parent()与父页面的交互方法也得作废重写。惊喜不惊喜?!
content属性包iframe标签方法存在的问题
- 载入的是整个html页,所有的css/js资源都得重载一遍,如果资源多的话可能会加大浏览器负担,降低响应速度。如果有需要实时更新数据的window页面(我就是),无论前后端都不爽利。
- 有违ajax精神,毕竟使用ajax重要目的之一不就是减少每次通讯的数据量嘛
总结
如果有历史遗留问题不能对代码改动,使用iframe标签稳妥;如果是从零开始构建,建议使用href属性。
但是我使用href也有不少坑
坑一:在页面中使用< div id=“demo”>方法创建窗口的,options设置中的id属性千万不要和div标签不同
<div id="demo"></div>
$('#demo').window({
id : 'demo' //这个id属性要和div标签一致
坑二:有时候,我是说在页面中使用ajax载入多种内容的情况下,多次开关window组件,会多次生成窗口代码插入在< /body>前面,经常会出现各种莫名其妙的问题。
再次DLLM,这么晚了,先睡觉,下次再写解决办法
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)