typeof returning “unknown” in IE

后端 未结 3 1325
萌比男神i
萌比男神i 2020-12-03 10:36

I have a window, where before being closed I refresh the underlying page.

if(opener && typeof(opener.Refresh) != \'undefined\')
{
    opener.Refresh(         


        
相关标签:
3条回答
  • 2020-12-03 10:57

    According to a duplicate question at Bytes, the typeof value unknown is added to JScript version 8, along with date.

    A comment to a blog by Robert Nyman can also be explanatory:

    Internet Explorer displays “unknown” when the object in question is on the other side of a COM+ bridge. You may not know this or realize this, but MS’s XMLHTTP object is part of a different COM+ object that implements IUnknown; when you call methods on it, you’re doing so over a COM bridge and not calling native JavaScript.

    Basically that’s MS’s answer if you try to test or access something that’s not a true part of the JScript engine.

    0 讨论(0)
  • 2020-12-03 11:07

    Try in operator. I had the same problem (with applet) and I solved it using in:

    if("Refresh" in opener) {
        opener.Refresh();
    }
    
    0 讨论(0)
  • 2020-12-03 11:11

    The ECMAScript specification states that for host objects the return value of the typeof operator is:

    Implementation-defined except may not be "undefined", "boolean", "number", or "string".

    I believe the unknown value is only ever returned in Internet Explorer. Interestingly, MSDN does not mention it:

    There are six possible values that typeof returns: "number," "string," "boolean," "object," "function," and "undefined."

    0 讨论(0)
提交回复
热议问题