alert, setInterval and setTimeout via silly tricks can be reassigned.
Apparently, IE does not allow the reassignment of the window.window, at
least static in other browsers.

try{window.window=null}catch(e){$.isIE=true};





On Tue, Jan 27, 2009 at 9:46 PM, Diego Perini <diego.per...@gmail.com>wrote:

>
> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to