Path: csiph.com!aioe.org!news.mixmin.net!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: comp.lang.javascript Subject: Re: custom event in IE Date: Tue, 10 Jan 2017 12:53:37 +0100 Organization: PointedEars Software (PES) Lines: 60 Message-ID: <2568174.e9J7NaK4W3@PointedEars.de> References: <8bydnVoLx8BUq-nFnZ2dnUU7-bednZ2d@westnet.com.au> <4259298.GXAFRqVoOG@PointedEars.de> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1484049220 8030 eJwFwYEBwDAEBMCVEvxjHKH2H6F3UF62G0HDYt37iXS3jUnMfvmIshrbG7JzmMh8GuE4LP0BK28RFA== (10 Jan 2017 11:53:40 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Tue, 10 Jan 2017 11:53:40 +0000 (UTC) User-Agent: KNode/4.14.2 Cancel-Lock: sha1:tJQoiNDaB7WbQhcZzkamrII8kXo= Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg== X-User-ID: eJwNxsEBwCAIA8CViEDEcTTK/iO097p0gprBZGRnl0g8tNkgTrudvPEPFzqoFjfglDFic92SD996q4cipn9DFBUV X-Face: %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&. I used a try/catch and when it fails for IE the "catch" part uses > initCustomEvent > > 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: 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: f. 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: | | Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.