A user account is required in order to edit this wiki, but we've had to disable public user registrations due to spam.

To request an account, ask an autoconfirmed user on Chat (such as one of these permanent autoconfirmed members).

Modal prompts: Difference between revisions

From WHATWG Wiki
Jump to navigation Jump to search
(Initial proposal for dealing with modal dialogs)
 
(add webidl and reword showModalDialog section)
Line 20: Line 20:


When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For <code>confirm</code> and <code>prompt</code>, the callback takes one parameter which is set to the value to modal version would have returned.
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For <code>confirm</code> and <code>prompt</code>, the callback takes one parameter which is set to the value to modal version would have returned.
====WebIDL====
Current interface
<pre>
void alert(DOMString message);
boolean confirm(DOMString message);
DOMString? prompt(DOMString message, optional DOMString default);
</pre>
Proposed interface
<pre>
void alert(DOMString message, optional VoidCallback complete);
boolean confirm(DOMString message, BooleanCallback complete);
DOMString? prompt(DOMString message, optional BooleanCallback complete);
DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);
</pre>
<code>prompt</code> requires overloading, as the existing interface already has an optional parameter.


===showModalDialog===
===showModalDialog===


<code>window.showModalDialog</code> should be deprecated and removed from the platform. Web sites should use e.g. <code>window.open</code> instead.
I would like to propose deprecating and eventually removing <code>window.showModalDialog</code> from the platform. Web sites can already now use e.g. <code>window.open</code> instead. However, I'm not quite sure how this could be achieved.




Line 34: Line 55:
==Issues==
==Issues==


What would a reasonable plan to deprecate <code>showModalDialog</code> look like
What would a reasonable plan to deprecate <code>showModalDialog</code> look like?


[[Category:Proposals]]
[[Category:Proposals]]

Revision as of 19:34, 14 February 2012

Overview

This document describes a proposal for gradually removing modal dialogs and prompts from the platform.

Rationale

In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can't interact with any other web site as long as the modal dialog is displayed.

Furthermore, implementing showModalDialog might require running a nested message loop which caused several security issues in the past.

Proposal

Callbacks

For the following modal prompts, a callback parameter is introduced

  • alert
  • confirm
  • prompt

When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For confirm and prompt, the callback takes one parameter which is set to the value to modal version would have returned.

WebIDL

Current interface

 void alert(DOMString message);
 boolean confirm(DOMString message);
 DOMString? prompt(DOMString message, optional DOMString default);

Proposed interface

 void alert(DOMString message, optional VoidCallback complete);
 boolean confirm(DOMString message, BooleanCallback complete);
 DOMString? prompt(DOMString message, optional BooleanCallback complete);
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);

prompt requires overloading, as the existing interface already has an optional parameter.

showModalDialog

I would like to propose deprecating and eventually removing window.showModalDialog from the platform. Web sites can already now use e.g. window.open instead. However, I'm not quite sure how this could be achieved.


Examples

window.confirm("Are you sure?", function(result) { if (result) doIt(); });

Issues

What would a reasonable plan to deprecate showModalDialog look like?