在工作需要,前段时间,开始转向ecshop,任何程序都不可能直接拿来用的,于是,开始做简单的二次开发。一接触才知道,原来做二次开发也不是特别难,难的是去适应别人的编程思路。在二次开发过程中也发现一些ecshop团队编程过程中一些待改进的地方。
有一个比较明显的就是:在ecshop商品显示页面,容易出现“internet无法打开页面”的错误,
出错描述页面,当然,仅在ie6状态下容易出现,包括使用ie核心的一些第三方浏览器。在咨询了百度,搜狗,搜搜之类的搜索引擎之后,告知的解决方案有两种,主动解决和被动解决。主动解决没有具体的解决方案,主要是说程序有问题,也没有给出问题出现在哪里,就像后台编程时出现的500错误一样,反正就是错了。被动解决是说ie6自身有问题,需要更改它的一些设置,不过,按网上的思路也没有能够正常解决,于是,换浏览器是一种选择,比如,一些新版本的ie外壳浏览器就部分解决了这个问题,至少不会出现错误,只是加载不完。当然,一些原版的系统上面不容易出现这种错误。于是,在不能寻求被动解决的情况下,寻求主动解决思路,去研究ecshop源文件。
花去很多时间后,发现这个问题是一个名叫“reg”的js函数引起的。reg这个函数里面用了很多innerhtml这个东西,而且是频繁的使用,导致ie崩溃,ie部分版本自身的缺陷导致处理大容量的innerhtml来容易崩溃,这个函数是ecshop官方文件里面的,这就有个问题了,ecshop作为康盛集团旗下产品之一,应该不会出现这种问题的,因为,从常识来看,兼容多浏览器里面的ie6这个怪胎,应该是首先考虑ie6,而康盛集团的产品却出现如此设计失误,真是让人捉摸不透。这也就是前面所提到的,程序错误,需要主动解决,解决办法其实很简单,ecshop在使用这个reg函数过程中,是在一个tab滑动菜单的地方,本身滑动菜单相当容易写,把它改成tab型滑动菜单就可以完全解决这个bug了。康盛集团还有很多其它产品,不知道是否也有这个bug,很难断定,因为目前只接触到了ecshop,不过,其它产品或许就算是有这个bug,也很难发现,ecshop中的这个reg函数是一个滑动菜单处理,错误发生在innerhtml这一点,必须要有很多的html字符时才容易出现,于是,在网上翻了很多资料也没有找到解决思路。仅有一个案例,某网友在ecshop官方论坛上面发贴,前面说出现问题,后面又自己恢复好了,我估计它应该是在显示页面放的东西不够多,所以,感觉是恢复了,如果它再放多点资料在商品显示页面,这种错误我相信会很快重现!
解决问题的function展示如下:
function stab(a,b,c,d){
for(var i=1;i<=b;i++){
if(i==a){
document.getElementById(c+i).className="";
document.getElementById(d+i).style.display="block";
}else{
document.getElementById(c+i).className="h2bg";
document.getElementById(d+i).style.display="none";
}
}
}