问题
一直稳定使用的easyui搭建的系统最近出现了表单提交不稳定的情况。在表单submit事件第一次进行调用会不提交接口进入到sucess事件中,第二次调用会正常运行,调用成功失败不定。
分析
经过对比测试,在新版chrome83的浏览器中会出现这种情况。开始是以为由于easyui版本太低,于是尝试升级至1.9.6,但测试发现并不能解决这个问题。于是猜测是新版本的chrome的问题,最后确定了是算chrome83版本的bug,不知道后面更新版本什么时候修复。根本原因是easyui中的submit提交表单使用了iframe无刷新提交数据,iframe的src为javascript:false;。
解决
既然是由于iframe做提交出现的问题,是否能不使用iframe进行提交?最后在文档中查到form中有一个iframe的属性定义是否使用iframe,版本在1.4.5以上
这完美解决了当前我的问题。
曾尝试过使用ajaxform方法来进行对submit方法进行模拟调用,但在beforeSubmit中与easyui的onSubmit并不相同,easyui中的在onSubmit中可以对提交的参数进行修改,而ajaxform不能实现,所以并不适合我的系统。
另外的方法可能是涉及到修改源码的部分,曾看到对源码提交做setTimeout延时处理的,在这我并未做测试实践有兴趣的可以搜查一下。
总结
据说在7.14中的chrome84中会整合解决这个问题,遇到相同问题的伙伴们可以看看或许能帮到你。ღ( ´・ᴗ・` )比心