[opencms-dev] Firefox 3.5 script errors in Explorer view -- fixed version of tree.js
Shi Yusen
shiys at langhua.cn
Thu Jul 9 13:05:51 CEST 2009
Great work! Thanks a lot!
在 2009-07-09四的 11:29 +0200,Christian Steinert写道:
> Dear all, dear Achim
>
> I have fixed various issues with the javascript code that displays the
> Explorer tree, to make it work properly with Firefox 3.5.
>
> The updated file is attached. It should work at least with Opencms 7.0.x
> and 7.5.x.
> You have to upload it to the folder /system/workplace/resources/commons/
> of your opencms installation and then publish it.
>
> As noted before, I won't have time to look into other Firefox 3.5
> issues. If further bugs come up for tree.js, I would be willing to take
> another look but if there are still problems in other areas, then it
> would be great, if others could also help to fix them. Alkacon is doing
> a lot, but they can't be expected to always do everything by themselves.
>
> ____________
>
> Things that were changed (none of these changes should negatively affect
> other browsers):
>
> - The tree does not seem to hang/freeze anymore after a rewrite of
> function getNodeIdByName. Before, the logic had been a bit complicated
> and the conditions for terminating this functions, were in my opinion a
> bit dubious before when not finding a tree node.
>
> - All access to tree nodes (previously done directly through direct
> array access in the form tree.nodes[ nodeId ]) is now handled by a new
> function getNodeById.
> It seems that at least part of the tree problems in Firefox was, that
> tree nodes are usually using numbers as IDs but sometimes, strings that
> contain numbers are used for accessing them. Maybe, Firefox 3.5 is a
> little stricter in such situations, as soon as the JIT is enabled, since
> the JIT will try to impose type information onto javascript variables.
> The new getNodeById function will sanitize input and find tree nodes
> anyway, even if the node index was passed in as a String and not a
> number. All future read access of tree nodes should also be done through
> this function.
>
> - lots of cleanup:
> * sanitized all checks for null/undefined - if(foo != null) was changed
> to if(foo); if(foo==null) was changed to if(!foo), both of which are
> much safer
> * changed string concatenation so that "+" is at the end of the previous
> line, which is not as nice to read, but a lot safer (javascript will
> automatically insert semicolons in various situations, and therefore, it
> matters a lot, where line breaks are)
> * where possible, changed comparisons to use === instead of == which is
> faster and safer. Note that this is not alway possible, because node ids
> can sometimes be numbers and sometimes be strings
> * added various missing variable declarations where they had been
> forgotten (undeclared variables are implicitly global in Javascript,
> which can lead to nasty bugs)
> * re-ordered functions so that they are always defined before their
> first caller, as advised by jslint.
> * fixed all remaining jslint errors
>
> Comments are welcome.
>
> Kind Regards
> Christian
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
More information about the opencms-dev
mailing list