[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