Juriy, we agreed that if we can write something in the DOM everybody else can delete/overwrite it and fold our testing.
Your feature test on the "alert()" method will probably have failed with this old piece of code of mine :-) http://javascript.nwbox.com/asyncAlert/ Diego On 27 Gen, 22:20, kangax <kan...@gmail.com> wrote: > On Jan 27, 1:37 pm, Diego Perini <diego.per...@gmail.com> wrote: > [...] > > > One "span" element with an id="length" will do much more damages to > > every existing framework/library, and there are tons of properties > > that can be overwritten. Should we also hope no other browser > > implements conditional comments ? > > > Are you interested in how much a test is "foldable" or how good it is > > into recognize if the browser is IE ? > > > First case you win, second case I win. > > I'm not sure I understand your argument. Second "case" actually > somewhat depends on the former one - how "good" it is would surely > depend on how hard it is to *accidentally* break it. I also have no > idea why you would want go with the weaker test when other - more > robust ways - are available. Is it because `fileSize` saves few lines > of code? It's up to you of course, but if something is known to > produce false positives (in a not so contrived case scenario), why not > try alternative approach? Chances of `document.fileSize` being truthy > are too big (as for my taste); Its value is easily changeable by any > 3rd party script. Why such risk? Why not use test that operates on a > lower level? > > I would probably try testing for behavior that can not be easily > overwritten. Something that is at the core of the object/host model. > Something like: > > var IS_MSHTML_DOM = (function() { > var global = this; > return ( > global.alert && > // some host methods return "object" for `typeof` > typeof global.alert == 'object' && > // some host methods do not inherit from `Function.prototype` > typeof global.alert.call == 'undefined' && > // some host methods throw errors on setters > (function(){ > try { > global.alert.x = true; > return false; > } catch(e) { > return true; > } > })() > ) > > })(); > > While it's still possible to fool this test, chances of that are, imo, > much lower. > > -- > kangax --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---