更新Blog到2.1.0 alpha 3,目前一切正常。
由于模板双边栏显示隐藏问题修改了common.js中的函数,这次跟新blog的时候突然想到JavaScript能不能像C语言那样重构函数,这样就不用修改论坛原程序了。但是查了不少资料发现JavaScript本身不支持函数重构。偶然找到一篇文章:
想了半天没找到解决方案,觉得还是先试一把吧,就写了一个简单的HTML文件(在外地网吧里,除了记事本没有什么可以做网页的东西,只好简单写一下了):
[codes=xml]<html>
<body>
<script>
function aa()
{alert('aa');}
function aa(m)
{alert(m);}
aa();
aa('css');
</script>
</body>
</html>[/codes]
结果运行后发现第一次调用不能正确执行,第二次调用却是正确的。也就是说,用同样的函数名重定义函数后,第一次的定义就不起作用了(不管参数是否相同)。
把要修改的函数写到一个单独的JS文件里(譬如要JS001.js),然后在模板中的Common.js后调用这个新的JS文件:
<script language="JavaScript" src="/script/common.js" type="text/javascript"></script>
<script language="JavaScript" src="/script/JS001.js" type="text/javascript"></script>
这样一来,原系统的JS没有修改,而其中的部分函数实际执行的代码却是新的了。基本上实现了haphic的要求,说是实现了所谓的JS函数的“重构”,其实只不过是重新定义了JS函数而已。
==============
当然,以上方法只是因为要求还使用原来的函数名(以尽可能少地让别的用户少改模板为目的),所以才造成了一点小困难,如果不是这么考虑的话,用新函数名,模板中调用时也改作新函数名,就不用考虑这么多麻烦事了~