(越辰家政软件部收集整理www.yocin.com)
IE8从推出到现在已经有了一段时间了,大家也逐渐开始升级到IE8,但如果您的网站后台使用了eWebEditor在线编辑器的话,就会碰到以下的问题:
网站后台使用的可视化编辑器不能正常使用,编辑器图标点击无效(兼容模式依然无效),会提示editor.js或editor.asp等网页中的“缺少对象”错误。
根据网友们的分析:是IE8中不再支持“anonymous()”方法,于是网上也出现解决的办法,就是将anonymous()改为onclick(event),在IE8中便可正常使用,同时增加了版本判断,使得代码兼容老版本的IE,例如IE6/IE7。
方法如下:
打开 Editor/Js/Editor.js,把下面的
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
改为:
if(navigator.appVersion.match(/8./i)=='8.'){
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "onclick(event)");
}
else{
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
}
或者
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
if(Sys.ie=='8.0') //IE版本判断
{
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "onclick(event)");
}
else
{
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
}
************************************************************************************
不同写法:
如果说web编辑器中用户量,ewebeditor绝对占有一席之地。虽然随着技术的发展,ckeditor的运用越来越广泛,但众多的系统,
尤其是在asp系统中,ewebeditor依然广泛存在。
在ie8中,默认情况下,会无法使用ewebeditor的弹出框功能,也就是说,它的插入图片,文件功能却因为无法调出而不能使用。
其实,这个问题的出现,其根本原因是ewebeditor中使用了ie8不支持的anonymous()方法.
if () eval( + “anonymous()”);
我们先来看看什么是anonymous方法,从上面的代码中,可以注意到这应该是一个事件处理的代码。由于用到了eval,而eval方法就
是执行“字符串”中的js代码.先来看看官方是怎么解释的,我在这个网页(
假如我们要处理点击事件,我们通常需要编写事件处理函数,一般来说,DOM提供了捕捉事件的方法,另外,它还提供了Event类,
此类中包含了有关事件的所有信息,这样,你就可以在自己的事件处理函数中使用它了。
onclick=”alert()”>点击此处.
由于浏览器的不同,上述的处理方式也就有了小小的不同。Netscape浏览器中使用的方法是
function onclick(event) {
alert(this.onclick);
}
而在ie的8.0以前的版本中,则提供了另外一种处理方法,这种方法就是anonymous方法
function anonymous() {
alert(this.onclick);
}
由于ie8已经不再兼容这个方法而是采用了和netscape相同的处理方法,因此,上述方法在ie8中就失去作用,也就导致了
ewebeditor
在ie8中无法使用插入图片的问题。解决的方法就是使用netscape的处理方式,同时,为了兼容以前的浏览器,我们需要对
浏览器的类型进行判断,并仅在ie8时使用netscape方法.
1、首先找到eWebEditor编辑器所在的目录,然后搜索到editor.js文件,由于eWebEditor有很多个版本,所以editor.js
文件所在的目录也有所不同,有的可能在Include目录下,有的可能在js目录下。
2、用记事本打开editor.js文件,找到如下代码:
if (element.YUSERONCLICK) {
eval(element.YUSERONCLICK + "anonymous()");
}
由于eWebEditor编辑器版本不同,有的可能找不到上面的代码,而是下面这样的代码,两种代码只是书写格式不同而已,
含义是一样的:
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
3、将上面的代码替换为下面的代码即可:
if(navigator.appVersion.match(/8./i)=='8.')
{
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "onclick(event)");
}
else
{
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + "anonymous()");
}
虽然以上方法解决了IE8中使用的问题,但在Chrome、Opera、Firefox这三个浏览器下依然不能使用,所以建议各位开发网站时慎重使用eWebeditor编辑器,或者改用Fckeditor编辑器。