注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

★柳暗花明★

似水年华,诠释着无力的永恒······

 
 
 

日志

 
 

解决使用eWebeditor网络编辑器可能产生的几个问题  

2010-10-28 16:05:35|  分类: Html经典 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       经常做项目或者网站的朋友都知道,网络编辑器在编辑大批量文本或者上传下载图片、flash上具有不可抵挡的魅力,因此,尽管网上疯传eWebeditor漏洞很多,给黑客以可乘之机,使用的人却不曾骤减。这里,我只想解决我在使用过程中遇到过的几个问题:


1.  现象:网页A.jsp中嵌入了一个iframe,这个iframe的src指向网页B.jsp,在B.jsp中有个“添加”按钮,点击后弹出一个层,层内嵌套了eWebeditor.jsp。这样可能导致弹出的层无法获得焦点,或者关闭这个层后,原B.jsp页面上的input文本框无法聚焦。

     分析:这种现象网络上都说是IE的bug,是因为打开A.jsp之后,上面的iframe占用了DOM,如果再点击按钮在本页弹出一个新的iframe,那么由于上个DOM在内存中还未释放(有的人清除了DOM还是不行,是因为内存中还有),就会引起冲突,导致第二个iframe无法获得焦点。

      方法:我只说下我的方法,我的技术还不到家,正面解决不了,我只能走别的路。

           一种是,把弹出层这个方式改成用Window.open()打开一个新页面的方式:

window.open('add_news.jsp', 'newwindow', 'height=455, width=800, top=100, left=300, toolbar=no, menubar=no, scrollbars=yes, resizable=yes,location=no, status=no,alwaysRaised=yes');  但是这样网页打开稍微慢点。

            另一种是,页面A.jsp不用iframe嵌入来做,而采用把除iframe之外的部分用include指令包含进来,做成多个网页的形式,这样在本页面上打开新页面就很快了,只是得多做几个网页了。


2.  现象:带有eWebeditor编辑器的网页在点击了一次提交按钮之后,向数据库提交了两次,出现了两条记录。

     分析:有两种可能的原因,第一种是,你在提交前调用了验证函数,验证函数中有一条XXXX.submit();语句,而你按钮的type属性值或者name属性值也为“submit”,这样就会两次提交,这是低级错误。直接去掉验证函数中XXXX.submit();

                                            第二种是,你onsubmit的验证函数check()中有一条XXXX.submit();语句,你的提交按钮type属性值为button。有人也许要问,这样应该是对的啊。我也这么认为,但是你忽略了eWebeditor本身自带了远程自动提交的功能,而且这个自带的提交js貌似监听的是"提交事件",如果你点击按钮通过了onclick事件或者onclick没有触发函数,就会继续发出"提交事件"请求,双方都提交一次就成了两次。

       方法:提交按钮的type属性值设置成"submit",其他相关函数内尤其验证函数内不要有类似XXXX.submit();的语句。


3.  现象:点击提交按钮可以正常提交,但是提交以后发现数据库内是中文乱码。

     分析:乱码是由于编码方式的不一致产生的。比如,你的jsp页面用的是utf-8的编码,但是通过servlet来提交时,后台java程序中doGet或doPost方法内设置的编码方式不是utf-8,是"GBK“或者"gb2312"。

      方法:在你要使用的doGet或者doPost方法内设置req.setCharacterEncoding("utf-8");   注意:eWebeditor的页面编码不要随便修改。


4.  现象:点击提交后验证函数验证失败,明明验证函数里是return false;但是还是向数据库里提交了一条记录。

     分析:这里,你需要弄清楚,点击提交按钮后,是onsubmit先执行还是onclick先执行,还有onsubmit和onclick的区别。

             用户点击按钮 -----> onclick ----> 如果onclick返回有效或未处理onclick ,则提交表单 -----> onsubmit -----> 如果onsubmit 未处理或返回true,则提交,否则取消提交。

             onclick 和 onsubmit 的区别:

  • onSubmit 是表单上(也只能是表单)用的,提交表单前会触发。
  • onClick 是按钮等控件上用的,用来触发点击事件。
  •              这样如果点击按钮后触发了onclick返回ture或未处理,就会发出"提交请求",提交请求兵分两路,一路通过onsubmit后验证失败,取消提交,另一路走向eWebeditor的自动提交,因此还是会让eWebediror提交一次。

         方法:把验证函数放到onclick事件里,不要放到onsubmit事件里。这样只要onclick不通过,就无法发出"提交请求"了。

      评论这张
     
    阅读(838)| 评论(2)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017