Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #32160

Re: custom event in IE

From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Newsgroups comp.lang.javascript
Subject Re: custom event in IE
Date 2017-01-10 12:53 +0100
Organization PointedEars Software (PES)
Message-ID <2568174.e9J7NaK4W3@PointedEars.de> (permalink)
References <ZpKdncuDJ6SUqenFnZ2dnUU7-YHNnZ2d@westnet.com.au> <8bydnVoLx8BUq-nFnZ2dnUU7-bednZ2d@westnet.com.au> <4259298.GXAFRqVoOG@PointedEars.de> <drGdnYqmpYpK_unFnZ2dnUU7-bfNnZ2d@westnet.com.au>

Show all headers | View raw


Andrew Poulos wrote:

> I used a try/catch and when it fails for IE the "catch" part uses
> initCustomEvent
>    <https://msdn.microsoft.com/en-us/library/ff975987(v=vs.85).aspx>
> to create the event:
> 
> function dispatch(elem, theEvent) {
>    try {
>      elem.dispatchEvent(new CustomEvent(theEvent));
>    } catch(err) {
>      var evt = document.createEvent("CustomEvent");
>      evt.initCustomEvent(theEvent, true, false, {});
>      elem.dispatchEvent(evt);
>    }
> }

Because not only “new CustomEvent(theEvent)” may throw an exception, you 
should not simply handle all exceptions caused by this statement with the 
catch code, but only the specific one.  Since there is no compatible way to 
catch only a specific type of exception (AFAIK only Mozilla JavaScript has a 
way, see the ES Matrix), you should rethrow the exception if it is not the 
one that you want to handle.  For example:

  try {
    elem.dispatchEvent(new CustomEvent(theEvent));
  } catch (err) {
    if (!(err instanceof TypeError)) throw err;

    var evt = document.createEvent("CustomEvent");
    evt.initCustomEvent(theEvent, true, false, {});
    elem.dispatchEvent(evt);
  }

In JScript the “number” property of the Error instance referred by “err” 
could also help to tell apart this exception from other TypeError 
exceptions:

<https://msdn.microsoft.com/en-us/library/hc53e755(v=vs.94).aspx>
<https://msdn.microsoft.com/en-us/library/1dk3k160(v=vs.94).aspx>

But note that a TypeError exception for “new CustomEvent(theEvent)” is not 
thrown only in IE/MSHTML, but also in all user agents that do not implement 
CustomEvent which was introduced in W3C DOM 4 and the WHATWG DOM:

<https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/initCustomEvent> f.
<http://www.w3.org/TR/2015/REC-dom-20151119/#interface-customevent>


Since the first argument to the CustomEvent constructor and the 
initCustomEvent() method is specified to be a DOMString designating the type 
of the event, you should name your formal parameter something like 
“eventType”; not “theEvent” which conveys the misconception that it would be 
a reference to an event object.

-- 
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

custom event in IE Andrew Poulos <ap_prog@hotmail.com> - 2017-01-10 12:08 +1100
  Re: custom event in IE Andrew Poulos <ap_prog@hotmail.com> - 2017-01-10 12:20 +1100
    Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-10 02:45 +0100
      Re: custom event in IE Andrew Poulos <ap_prog@hotmail.com> - 2017-01-10 15:32 +1100
        Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-10 12:53 +0100
          Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-11 08:25 +0100
        Re: custom event in IE James Kirk <noneya.invalid@gmail.com> - 2017-01-10 21:52 -0500
          Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-11 04:09 +0100
            Re: custom event in IE James Kirk <noneya.invalid@gmail.com> - 2017-01-11 21:31 -0500
              Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-12 14:22 +0100
            Re: custom event in IE Scott Sauyet <scott@sauyet.com> - 2017-01-14 23:01 +0000
              Re: custom event in IE "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-01-15 09:51 -0800
                Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-15 22:37 +0100
                Can we recognize Constructor Functions (was: custom event in IE) Scott Sauyet <scott@sauyet.com> - 2017-01-15 23:39 +0000
                Re: custom event in IE Scott Sauyet <scott@sauyet.com> - 2017-01-15 23:15 +0000
                Re: custom event in IE "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-01-15 22:36 -0800
                Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-16 12:54 +0100
                Re: custom event in IE "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2017-01-16 14:18 -0800
                Re: custom event in IE Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2017-01-17 00:24 +0100

csiph-web