[whatwg] Optional non-blocking mode for simple dialogs (alert, confirm, prompt).

Ben Rimmington benrimmington at me.com
Sun Feb 27 00:57:08 PST 2011


> On Sat, Feb 26, 2011 at 2:29 PM, Ben Rimmington <benrimmington at me.com> wrote:
> 
>> <http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#simple-dialogs>
>> 
>> An optional callback parameter could be added to the simple dialogs API:
>> 
>>> result = window.alert(message, [callback]);
>>> 
>>> result = window.confirm(message, [callback]);
>>> 
>>> result = window.prompt(message, [default], [callback]);
>> 
>> If the callback argument is recognised as a function value:
>> 
>>  * the result is the supplied callback;
>> 
>>  * the callee returns without waiting for user input;
>> 
>>  * the callback is invoked after the dialog is dismissed.
>> 
>> Otherwise [see current spec]:
>> 
>>  * the callee simply ignores the callback argument;
>> 
>>  * the script is paused until the dialog is dismissed;
>> 
>>  * the result is undefined, boolean, string or null.

I originally thought that the simple dialogs API, as part of the new HTML spec, should be improved if possible. But I've changed my mind -- I suspect that experienced developers will continue to avoid using the API.

On 27 Feb 2011, at 00:08, Adam Barth wrote:

>> For user agents that don't support the updated API:
>> 
>>> function promptWrapper(message, default, callback) {
>>>     var result = window.prompt(message, default, callback);
>>>     if (callback && (typeof callback === "function")) {
>>>         if (result !== callback) {
>>>             callback(result);
>>>         }
>>>         return callback;
>>>     }
>>>     return result;
>>> }
> 
> Of course, that would be a synchronous callback rather than an async one...

That's true, a compatibility layer such as promptWrapper() would need to use window.setTimeout() for an async callback. The example code was mainly intended to show how "feature detection" of the non-blocking mode could be implemented.




More information about the whatwg mailing list