On Sun, Feb 27, 2011 at 11:53 AM, Ben Rimmington <[email protected]> wrote: >> Feature detection needs to be possible without actually calling the >> function--without actually opening a prompt. For example, if you're to run >> the above prompt from a timeout, you need to know that *before* you call >> prompt(), since you don't want a timeout if the async API is supported. > > You'd only need to use window.setTimeout() if window.prompt() ignored your > callback argument and didn't return it: > >> function promptWrapper(message, default, callback) { >> var result = window.prompt(message, default, callback); >> if (callback && (typeof callback === "function")) { >> if (result !== callback) { >> /*** INSTEAD OF: callback(result); ***/ >> window.setTimeout(callback, 1, result); >> } >> return callback; >> } >> return result; >> } > > However, as you pointed out, this "feature detection" only occurs after > window.prompt() is invoked. A better way might be to test the > window.prompt.length property (if 3 or more then non-blocking mode is > supported). >
Firefox 3.6.13 already returns 4 for "window.prompt.length". Are the 2 extra parameters already known/used ? -- Diego >> The pattern in new APIs like IDB and FileAPI is to have separate sync and >> async interfaces, not overloaded behavior, eg: >> >> promptAsync(message, default, callback); >> >> Better off just leaving this crusty old API in the legacy bin, though. > > Agreed. > >
