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


Groups > comp.lang.javascript > #31302

Re: restore window alert

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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