W3C home > Mailing lists > Public > public-html@w3.org > December 2009

Re: http content type authoritative for object data?

From: Joe D Williams <joedwil@earthlink.net>
Date: Tue, 15 Dec 2009 08:55:14 -0800
Message-ID: <716FB801EF954E5D8450DEC94E354DEC@joe1446a4150a8>
To: "Leif Halvard Silli" <xn--mlform-iua@xn--mlform-iua.no>
Cc: "Julian Reschke" <julian.reschke@gmx.de>, "Jonas Sicking" <jonas@sicking.cc>, "Boris Zbarsky" <bzbarsky@mit.edu>, <public-html@w3.org>
> Perhaps you're aware of this then:
>
> http://www.w3.org/QA/2008/09/howto-insert-youtube-video.html

Thanks for pointing that our. Seems like we are on the same path here.
I want to say if there is a budget we can talk about that in more 
detail but the key, I think is looking at this from the point of view 
of the embedded object, not from the point of view of the host

UA. It is desirable t be able to count on an active scriptable object 
that can extend the capabilities of html as a 'live' part of the host 
DOM. You gotta think in terms or what the extension needs to run and 
have free access to the host DOM and networking. Now that all browsers 
support a first cut at <object>, let's take the time to give it a 
reliable home in xhtml and html documents.

<object width="425" height="349">
 <param name="movie" value="http:...1"></param>
 <param name="allowFullScreen" value="true"></param>
  <embed src="http:...1"
    type="application/x-shockwave-flash"
    allowfullscreen="true" width="425" height="349">
  </embed>
</object>

Just what we have been discussing. Sorry for this late response.
Here <object> is a useless container for <embed> which contains the 
info needed to get the thing running.

Please note somewhere that the the name-value pairs for the strings 
'movie' and 'allowfullscreen' are interfaces for the PlugIn, These are 
not part of any spec except the spec for the plugin.
HTML interfaces defined by <embed> and <object> are @width and @height 
and @type.
<embed> uses @src to identify the resource; <object> uses @data.
<embed> encodes the plugin interfaces in the same way as the 
standardized interfaces; <object> uses <param> elements.

<object width="425" height="349">
 <param name="movie" value="http:...1"></param>
 <param name="allowFullScreen" value="true"></param>
</object>

This should work everywhere by adding @type.
If, and only if the plugin defines an interface for 'movie'.
The idea that a plugin installs itself as a processing resource to the 
host UA is important.
@type value is a mime that the host UA recognizes as a resource 
registered with the host UA.


<object width="425" height="349" >
 <param name="movie" value="http://...1"/>
 <param name="allowFullScreen" value="true">
</object>

Again, this should work everywhere when written as:

<object width="425" height="349" type="application/x-shockwave-flash">

A note: <param> is one of those that are sometimes known as void in 
html and always as empty in xhtml.
Legally in html this is written as <...> and in xhtml as <.../> and of 
course the <.../> xhtml form should be legal in HTML 5 without 
exception. There is no reason to use the <...></,,,> form unless the 
intent is to include some sort of content between the tags.

Anyway, this step of understanding <object> could stop here for 
reflection and luck would have had us landing with this:

<object width="425" height="349" type="application/x-shockwave-flash">
 <param name="movie" value="http://...1"/>
 <param name="allowFullScreen" value="true">
  <p>Interview of Philippe Le Hégaret about Video codec</p>
</object>

where <p> is fallback. Instead we got "It probably means that the 
object element has no effect at all and embed is always triggered." 
Yes, it had no effect because it carried a lot less info than <embed>.

then we got

<object width="425" height="349"
 type="application/x-shockwave-flash"
 data="http://...1"">
<p>Interview of Philippe Le Hégaret about Video codec</p>
<param name="movie" value="http://...1" />
</object>

whih might have been considered malformed, because of the location of 
the fallback content. Note that both @data and "movie" contain the 
resource identifier. Historically, this would appear in situations 
where there were multiple plugins available but some plugins did not 
have the 'movie' interface defined. Thus, the author would duplicate 
the information to compensate.

At this time latest IE8 runs 1 and 5. I question whether 5 should run 
because it is malformed.
Latest Chrome runs them all.
Lartest Opera runs them all.
Latest Safari shows them all.
Latest Mozilla Firefox shows 1, 4, 5 (i think).

More later, but basically, the browsers that run all those examples 
are tuned for Flash.
Those UAs are playing in the <param>s - an area they have no business 
knowing about. So here the UA somehow 'knows' that the param named 
'movie' holds a value that is a URL. Then maybe sniffs the response to 
figure out it if a mime is registered, then runs the plugin. Another 
example of doing whatever is necessary to make something work, 
regardless of knowledge of the intention. Or, maybe just assume that 
if there is a name 'movie' that it must be Flash. Who knows? Reminds 
me of the kid team baseball coach who just tells the players that if 
they get past first to just keep running because the defense will 
probably throw the ball away. Might win a game or two but isn't a good 
representation of learning baseball tactics.

Thanks to All and BEst Regards,
Joe 
Received on Tuesday, 15 December 2009 16:56:03 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 29 October 2015 10:15:55 UTC