- From: Ian Hickson <ian@hixie.ch>
- Date: Tue, 22 Jul 2014 17:26:23 +0000 (UTC)
- To: Ben Maurer <ben.maurer@gmail.com>
- Cc: whatwg <whatwg@whatwg.org>, slightlyoff@google.com, William Chan <willchan@chromium.org>
On Mon, 21 Jul 2014, Ben Maurer wrote: > > (1) Allowing the user to specify parameters to Fetch. For example, a user > could say: > > <script src="/my.js" params="{'headers':{'myheader':'value'}}" > id="myscript" /> > > This would allow the user to make any type of request customization that > they could for a direct call to Fetch. I think this would make a lot of sense. It's similar to earlier suggestions for controlling "Referer" on a per-link basis, but more generic. The problem I had with the proposals for controlling Referer was that while there's an obvious way to do it for <script> and <link>, it quickly starts breaking down don't have a 1:1 mapping of URL to element. For example, how do you get the fetches of URLs in a style sheet? Or of the poster frame of a <video> element? Or EventSource objects? Should we just have different ways to set the options for each one? > (2) Allowing the user to access the in progress fetch object. For > example, a user could say: > > $("myscript").fetch.then(function(resp) { console.log(resp.status); }) > > Over time, the fetch object might add new functionality that would be > useful to the application developer. For example, I could imagine the > fetch object gaining a way to change HTTP/2 priorities mid-request. > Developers could take advantage of these functions for browser-initiated > fetches. This would make sense to me also, but has the same API explosion problem where there's no obvious way to expose this consistently for everything. > (3) Allowing the user to construct a script or stylesheet from a fetch. > Complex sites often want precise control over when scripts and > stylesheets are loaded and inserted into the DOM. For example, today > inserting a stylesheet blocks the execution of inline script tags. Some > sites may know that this dependency is not needed. This specific use case is something I'm already working on. My long-term plan is to integrate something like this with the HTML Imports dependency model and the ES Module dependency model so that we have a single model that can handle everything. > If one could construct stylesheets and scripts directly from a fetch, > the author could separate the act of fetching the stylesheet from > inserting into the DOM: If we have a way to give dependency information for the <link> or <script>, we don't need to manually manage the dependencies at the Fetch object level. > var myfetch = window.fetch(...); > myfetch.then(function(resp) { > document.body.appendChild(resp.body.asStyleSheet()); > }); > > By calling asStyleSheet, the user could preserve the devtools experience > that exists today while still having complete control over the fetching > of their content. We could do this too. It's mostly just a convenience method, right? > (4) Giving the user explicit access to initiate fetches from the preload > scanner. One downside of the approach in (3) is that it doesn't take > advantage of the preload scanner to initiate fetches. I could imagine > offering the user an explicit way to trigger a Fetch from the preload > scanner: > > <link id="foo" rel="fetch" href="/my.css" /> > $('foo').then(function(resp) { > document.body.appendChild(resp.body.asStyleSheet()); > }); This is exactly the kind of thing I'm looking at addressing with the aforementioned work on dependencies. -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Tuesday, 22 July 2014 17:26:48 UTC