- From: Nathan <nathan@webr3.org>
- Date: Sat, 04 Sep 2010 20:51:10 +0100
- To: nathan@webr3.org
- CC: Manu Sporny <msporny@digitalbazaar.com>, RDFa WG <public-rdfa-wg@w3.org>
Nathan wrote: > Nathan wrote: >> Manu Sporny wrote: >>> I haven't thought this through very well, but was wondering if it would >>> be advisable to have an ondata attribute for the <body> element? This >>> would work very much like the onload attribute that is already on the >>> <body> element. >>> >>> I can see a few implementers complaining that the RDFa processing of a >>> document could take a long time (as in more than 100ms), especially if >>> certain RDFa profiles take a while to retrieve or timeout. >>> >>> The worst case is that a bad implementation of the RDFa API would cause >>> the document not to render because the RDFa profiles are being >>> fetched/processed. Ideally, RDFa processing should happen >>> asynchronously. >> >> Perhaps then all parsing should happen asynchronously. >> >> DataStore could implement EventTarget and provide and dispatch the >> onload event whenever processing has completed. >> >> var store = document.data.createStore(); >> store.onload = function(event) { >> // triggered when the store is ready >> // i.e. once parsing is finished >> } >> var parser = document.data.createParser("rdfa1.1", store) >> parser.parse( somedocument ); >> >> >> Actually, thinking about this more, an XMLHttpRequest style readystate >> may be needed, ie add the following: >> >> interface DataStore : EventTarget { >> >> attribute Function onerror >> attribute Function onload >> attribute Function onreadystatechange; >> >> const unsigned short EMPTY = 0; >> const unsigned short LOADING = 1; >> const unsigned short DONE = 2; >> >> readonly attribute unsigned short readyState; >> >> } >> >> Ack, this brings up a whole host of (sadly unavoidable) questions - >> I'll mail them under separate cover - sorry. > > Scratch that, there are no issues :D thanks to: > - All instances of the DOM Document interface must implement RDFaDocument. > - The RDFa API must be initialized before the Web developer has access > to any of the methods that are defined in this specification > > So, carrying on, given the interface above, any developer could simply. > > document.data.store.onload = function(ev) { > // start processing when store is ready! > } > > This would be a very useful addition to the DataStore interface and make > async usage much nice - I'd love to see this added. > > Back to the specific issue of adding 'ondata' to the Body element. > Provided RDFa data was in the Body of the Document then this would be > fine, as the event would bubble from Body to Document (unsure if it > would go as far as Window like onload does). > > The name 'ondata' may raise some eyebrows though given the '@data-' > attributes in html5, the existing onmessage attribute, and the existing > onloadeddata used by media objects (like Audio & Video) which are both > already on Document. Thus perhaps a different, more accurate, name > should be chosen :) > > Again though, big +1 from me. Final thought, an additional attribute may not be needed if taking this approach, as one could simply <body onload="javascript:loadProcessor".. function loadProcessor() { if(document.data.store.readyState != DataStore.DONE) { document.data.store.onload = process; return; } process(); } function process() { // start working with RDFs data from here.. } Best, Nathan
Received on Saturday, 4 September 2010 19:52:29 UTC