Re: [fetch] XHR option to trigger busy indicators (#19)

I think this problem can be solved by add a new API: global fetch events.

These events should be fired when the page is fetching any resources, no matter caused by XHR, fetch, `<img>`, or CSS. These events should have a "affectBusyIndicator" setter to allow authors to decides whether a particular fetch can affect busy indicator of UAs. Of cause, global fetch events can also be used to implement a progress bar.

The suggested API follows MutationObserver's style, because this may be more efficient for large amount of events:

```javascript
var fetchObserver = new FetchObserver(onFetch);

fetchObserver.connect(window, { // connect to current window object
  contexts: ['fetch', 'xmlhttprequest', 'form'], // filter by [fetch's contexts](https://fetch.spec.whatwg.org/#concept-request-context)
  types: ['start', 'progress', 'end', 'error'], // filter by types of fetch events
  methods: ['GET', 'POST'], //  filter by methods
  nested: true, // also observe nested browsing contexts, e.g. iframes, workers
});

function onFetch(fetchRecords) {
  for (var i = 0; i < fetchRecords.length; i++) {
    var fetchRecord = fetchRecords[i];
    if (fetchRecord.type === 'start' &&
       /^http:\/\/somedomain\.net\/myapp\//.test(fetchRecord.url)) { // filter by URL
      fetchRecords[i].affectBusyIndicator = true; // inform the UA that this fetch should affect the busy indicator
    } else if (fetchRecord.type === 'progress') {
      // compute and update the progress bar
    }
  }
}
```



---
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/19#issuecomment-101516067

Received on Wednesday, 13 May 2015 05:18:15 UTC