As summary

return !!obj && typeof obj.toString === "undefined" &&
/^\s*\bfunction\b/.test(obj);

with a given IE function, it should not fail. Other browsers can use the
good old "[object Function]" trick.

On Mon, Aug 3, 2009 at 11:38 AM, Andrea Giammarchi <
andrea.giammar...@gmail.com> wrote:

> I solved it already, have you tried my snippet to understand native IE
> functions?
>
> Native IE functions have these "features"
>  - they are not instanteof Function
>  - they are not instanceof Object
>  - accordingly, they have not a toString method, decompilation is in this
> case safe enough
>  - you cannot call them via Function callbacks ( function expected, lol )
>
> Regards
>
>
> On Mon, Aug 3, 2009 at 10:57 AM, DBJDBJ <dbj...@gmail.com> wrote:
>
>>
>>
>> There are two "main points" here: terminology and reliability.
>> http://dbj.org/dbj/?p=270
>> (sorry for a blog plug )
>>
>> typeof( window.alert )  === 'object' is going head-on towards browser
>> (+OS) differences so, same as ECMA comitee, I have no resources to
>> "solve" that one ...
>>
>> --DBJ
>>
>> On Aug 1, 3:16 pm, Andrea Giammarchi <andrea.giammar...@gmail.com>
>> wrote:
>> > come on it was quoted as a metaphor ... what you have done makes sense
>> but
>> > if the point is reliability it does not in any case with IE so let's
>> speed
>> > up a common function, no?
>> >
>> > On Sat, Aug 1, 2009 at 2:17 PM, DBJDBJ <dbj...@gmail.com> wrote:
>> >
>> > > "... DBJ 'mess' ... " ?
>> >
>> > > One espresso to many , Andrea :-)  ?
>> >
>> > > PS:  I think that top.alert() is "object" in IE because they can't
>> > > think of DOM as a exclusive domain of javascript. There is this thing
>> > > called "vbscript" they have to make work inside IE, as well ... but ..
>> > > let's not go there ;o)
>> >
>> > > On Jul 27, 5:43 pm, Andrea Giammarchi <andrea.giammar...@gmail.com>
>> > > wrote:
>> > > > Yes Daniel ... ( sorry I had another ticket open and I read Ariel
>> ... )
>> >
>> > > > On Mon, Jul 27, 2009 at 5:43 PM, Andrea Giammarchi <
>> >
>> > > > andrea.giammar...@gmail.com> wrote:
>> > > > > Yes Ariel, I was talking about user defined stuff and obviously
>> typeof
>> > > > > "unknown" breaks the rule as well but this is not the case, is it?
>> >
>> > > > > If toString.call(obj) is not reliable cause it could return
>> [object
>> > > Object]
>> > > > > DBJ "mess" is not reliable as well because passed variable could
>> not
>> > > produce
>> > > > > what he is expecting, starting from document.getElementById which
>> is
>> > > object
>> > > > > and not function in IE, got the point?
>> >
>> > > > > At least you told me why there is a call rather than an instanceof
>> but
>> > > what
>> > > > > about this for IE DOM functions?
>> >
>> > > > > return !!obj && typeof obj.toString === "undefined" &&
>> > > > > /^\s*\bfunction\b/.test(obj);
>> >
>> > > > > it works fine to me in every IE (other browsers will be filtered
>> by
>> > > first
>> > > > > feature test)
>> >
>> > > > > Regards
>> >
>> > > > > On Mon, Jul 27, 2009 at 5:29 PM, Daniel Friesen <
>> > > nadir.seen.f...@gmail.com
>> > > > > > wrote:
>> >
>> > > > >> typeof fn === 'function'; // Some things like
>> > > > >> document.createElement('object'); return wonky results
>> > > > >> fn instanceof Function; // Breaks across iFrames
>> > > > >> toString.call(fn) === "[object Function]"; // Works the same
>> across
>> > > > >> iFrames and returns more reliable results
>> >
>> > > > >> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [
>> > >http://daniel.friesen.name]
>> >
>> > > > >> Andrea Giammarchi wrote:
>> > > > >> > About isFunction
>> >
>> > > > >> > I lost the point where toString.call(obj) === "[object
>> Function]"
>> > > was
>> > > > >> > introduced instead of obj instanceof function
>> >
>> > > > >> > I understand differences in IE so I wonder if two distinct
>> callbacks
>> > > > >> > could solve the odyssey:
>> >
>> > > > >> >     isFunction: function( obj ) {
>> > > > >> >         return obj instanceof Function;
>> > > > >> >     },
>> >
>> > > > >> >     isDOMFunction: toString.call(window.alert) === "[object
>> > > Function]" ?
>> > > > >> >         function( obj ) {
>> > > > >> >             return toString.call(obj) === "[object Function]";
>> > > > >> >         }:
>> > > > >> >         // IE only and only until standard native function
>> manifest
>> > > > >> >         function( obj ){
>> > > > >> >             return !!obj && typeof obj.toString === "undefined"
>> &&
>> > > > >> > /^\s*\bfunction\b/.test(obj);
>> > > > >> >         }
>> > > > >> >     ,
>> >
>> > > > >> > In this way we could consider that in every browser, and when
>> > > > >> > call/apply are supported, isFunction(fn) will guarantee
>> call/apply
>> > > > >> > while a DOMFunction could require a try catch or a different
>> > > behavior
>> > > > >> > for IE
>> >
>> > > > >> > switch(true){
>> > > > >> >     case $.isFunction(fn): return fn.call(what, ever);
>> > > > >> >     case $.isDOMFunction(fn): what.push.call(what,
>> > > toArray(fn(ever)));
>> > > > >> > return what;
>> > > > >> >     default: throw new Error("what tf?");
>> > > > >> > }
>> >
>> > > > >> > ... or maybe not?
>> > > > >> > Regards
>> >
>> > > > >> > On Sun, Jul 26, 2009 at 4:09 PM, Andrea Giammarchi
>> > > > >> > <andrea.giammar...@gmail.com <mailto:
>> andrea.giammar...@gmail.com>>
>> > > > >> wrote:
>> >
>> > > > >> >     I usually encapsulate toString from Object.prototype and if
>> > > > >> >     somebody breaks the rule it means we cannot trust anything
>> > > > >> >     included typeof. So, in few words, nobody has intersts into
>> > > break
>> > > > >> >     this rule, imho.
>> >
>> > > > >> >>     On Jul 26, 2009 8:07 AM, "DBJDBJ" <dbj...@gmail.com
>> > > > >> >>     <mailto:dbj...@gmail.com>> wrote:
>> >
>> > > > >> >>     Also, IMHO this yields high level of encapsulation of an
>> > > important
>> > > > >> >>     mechanism.
>> > > > >> >>     Which is a good thing.
>> > > > >> >>     And it is a fraction of a micro second slower then
>> >
>> > > > >> >>     Object.prototype.toString.call(x) === "[object Object]"
>> >
>> > > > >> >>     but it is more compact ...
>> >
>> > > > >> >>     In any case we are entering the subjective judgement
>> phase, so
>> > > I
>> > > > >> >>     think
>> > > > >> >>     we should stop here and leave it to jQuery team to use
>> this or
>> > > > >> not...
>> >
>> > > > >> >>     --DBJ On Jul 26, 12:09 am, Andrea Giammarchi
>> > > > >> >>     <andrea.giammar...@gmail.com
>> > > > >> >>     <mailto:andrea.giammar...@gmail.com>> wrote:
>> >
>> > > > >> >>     > I miss the point about regexp usage ... please tell me
>> the
>> > > > >> >>     difference (in a > real scenario) betwe...
>> >
>> > > > >> >>     > On Sat, Jul 25, 2009 at 1:38 PM, DBJDBJ <
>> dbj...@gmail.com
>> > > > >> >>     <mailto:dbj...@gmail.com>> wrote: > > > This indeed woks
>> :
>> > > > >>  functi...
>> >>
>>
>

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