[whatwg] [canvas] request for {create, get, put}ImageDataHD and ctx.backingStorePixelRatio

Tim Streater tim at clothears.org.uk
Mon Apr 16 13:40:00 PDT 2012

On 16 Apr 2012 at 19:07, Darin Fisher <darin at chromium.org> wrote: 

> Aren't we missing an opportunity here?  By giving web developers this easy
> migration path, you're also giving up the opportunity to encourage them to
> use a better API.  Asynchronous APIs are harder to use, and that's why we
> need to encourage their adoption.  If you just give people a synchronous
> version that accomplishes the same thing, then they will just use that,
> even if doing so causes their app to perform poorly.
> See synchronous XMLHttpRequest.  I'm sure every browser vendor wishes that
> didn't exist.  Note how we recently withdrew support for synchronous
> ArrayBuffer access on XHR?  We did this precisely to discourage use of
> synchronous mode XHR. Doing so actually broke some existing web pages.  The
> pain was deemed worth it.

In my app I have about 90 async XMLHttpRequest calls. I have one synchronous one that I'd really like to keep as it facilitates a clean tidy up if the user ignores my Exit button and quits by closing the window. When the app closes I need to run a script in order to shut down a local apache instance amongst other things. I hope I'm not going to find this to be a problem if synchronous mode XMLHttpRequest is removed from Safari at some future point. My code looks like this:

function quitbyClose ()

     // User clicked window close button. Must make a synchronous ajax call to tidy up. We have to ensure
     // SESE with no "return" being executed due to the odd way that onbeforeunload operates, in two cases:
     // 1) Where Safari re-opens myapp after user quits Safari and user has already restarted myapp
     // 2) Where user might try to start this file by hand

     var  request, data;

     if  (portnum>0)

          closeWindows ();                                                      // Close any popups

          data = "datarootpath=" + encodeURIComponent (datarootpath) + "&debugfl=" + debugfl;

          request = new XMLHttpRequest ();
          request.open ("POST", "http://localhost:" + portnum + "/bin/myapp-terminate.php", false);
          request.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
          request.onreadystatechange = function() { if  (request.readyState!=4)  return false; }
          request.send (data);



Cheers  --  Tim

More information about the whatwg mailing list