Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #31302
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: restore window alert |
| Date | 2016-09-10 16:26 +0200 |
| Organization | PointedEars Software (PES) |
| Message-ID | <1760285.oMNUckLgyt@PointedEars.de> (permalink) |
| References | <toydnbeQVIupLk3KnZ2dnUU7-KXNnZ2d@westnet.com.au> <18kx87e56fmrr.u0ghv1tkc6cu.dlg@40tude.net> <92e03e5f-e115-40d1-ba94-4b34459d8c14@googlegroups.com> |
Michael Haufe (TNO) wrote:
> On Thursday, September 8, 2016 at 6:47:29 AM UTC-5, JJ wrote:
>> On Thu, 8 Sep 2016 10:39:16 +1000, Andrew Poulos wrote:
>> > Is there any way to reference the native window.alert once its been
>> > overridden?
>>
>> Use:
>>
>> window.constructor.prototype.alert
>>
>> e.g.:
>>
>> window.constructor.prototype.alert.call(window, "the message");
>>
>> or restore it as a different name for easy access later e.g.:
>>
>> window.alert2 = window.constructor.prototype.alert;
>> window.alert2("the message");
>
> […] I'm paranoid about using "window.constructor". I see it in my mind as:
> [host object].constructor
ACK. Also, this is a long-winded, error-prone way of writing
Object.getPrototypeOf(window) [formerly, window.__proto__ in some DOM
implementations].
> Is this "safe" to us like this?
No. The safest approach is to create a Window object and copy the value of
its “alert” property.
An iframe, as you suggested, does not suffice, though, because that only
gives you the “iframe” element object. Accessing the window object of the
iframe document requires either support for the “contentWindow” property of
the iframe object or for the “contentDocument” of the iframe object and the
“defaultView” property of the iframe’s document object.
As an alternative, a new window object can be created, the reference to its
“alert” method retrieved, and its close() method be called:
var w = window.open();
var _alert = w.alert;
w.close();
Then either
window.alert = _alert;
window.alert(42);
or
Function.prototype.call.call(_alert, window, 42);
(AFAIK, all host methods can be safely .call()ed this way, and with
combinations of .call() and .apply().)
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
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
restore window alert Andrew Poulos <ap_prog@hotmail.com> - 2016-09-08 10:39 +1000
Re: restore window alert "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2016-09-07 18:00 -0700
Re: restore window alert JJ <jj4public@vfemail.net> - 2016-09-08 18:47 +0700
Re: restore window alert "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2016-09-08 06:43 -0700
Re: restore window alert Martin Honnen <martin.honnen@gmx.de> - 2016-09-08 16:32 +0200
Re: restore window alert Andrew Poulos <ap_prog@hotmail.com> - 2016-09-09 14:49 +1000
Re: restore window alert "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2016-09-09 06:20 -0700
Re: restore window alert Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-09-10 16:26 +0200
Re: restore window alert Ram Tobolski <ramtob@gmail.com> - 2016-09-11 00:17 -0700
Re: restore window alert Andrew Poulos <ap_prog@hotmail.com> - 2016-09-11 17:57 +1000
Re: restore window alert Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-09-11 11:19 +0200
Re: restore window alert Andrew Poulos <ap_prog@hotmail.com> - 2016-09-11 19:00 +1000
Re: restore window alert Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-09-11 13:24 +0200
csiph-web