2SIMPLE

我们已经回来

阴历节气、节日显示回复

这个JS问题困扰2SIMPLE一段时间了。起因很简单,因为用了一些现成的JS框架,数组被重新定义了,导致原来调用数组的方法失效。

比如原来一个正常的调用是:
for(i in XXX)

现在需要改写成:
for(var i=0; i<XXX.length; i++)

经过这样修改,阴历节气、节日终于回来了。据说采用外部JS框架还发生过事故,某网站引用上了外部框架,导致广告代码不能工作。这就两难了,因为它在JS框架上开发出来的代码是付出很大成本的,而如果是外部广告系统,调整广告代码也不是很容易,手心手背都是肉。

Written by Datou

七月 28th, 2006 at 10:56 上午

3 Responses to '阴历节气、节日显示回复'

Subscribe to comments with RSS or TrackBack to '阴历节气、节日显示回复'.

  1. 直接盗链一下会不会被BS?

    dimlau

    2006/07/28 12:50

  2. -_-#有数据库阿。
    盗链不了了

    dimlau

    2006/07/28 12:53

  3. 我把具体原因贴出来吧,万一有人遇到类似问题可以先找找看是不是这里出问题。
    =================
    当初2simple上有个其他功能(那个自动放大图片?)引用的js代码升级了,升级后那段代码引用了Prototype的代码,而Prototype代码中对Function,
    Array, Object等基础类都进行了扩展,加入了自定义的一些属性和方法。这样整个网站其他地方的所有js代码都受到了影响,日历代码也一样。

    日历代码里面有段for (item in
    myArray)代码,其中myArray是个数组实例。按照预想,它应该遍历整个数组的所有元素。但是由于Array类被扩展,因此javascript引擎就认为myArray是个Object而非Array,从而首先遍历了它的所有被扩展出的属性,然后再去遍历数组,这样就出错了。不过在这种情况下for
    (int i=0; i<myArray.length; i++){var item=myArray[i]}依然能正常起作用而不出错。

    如果要保留Prototype的代码,那么第一是由于日历里这种for in代码量比较大,需要一个个改成for ; ;
    循环;第二是我们不知道Prototype的扩展对其他代码是否有影响;第三是这个网站将来很有可能还要引用其他js文件,我们无法保证Prototype的扩展不对那些js起错误的影响。因此我们最后将那段功能代码从2.0降回了1.1,从而避免引用Prototype。

    cobalt

    2006/07/28 17:03

Leave a Reply