There is absolutely no way to "silo" any area of a page from rogue CSS selectors besides using an IFRAME. Even the <style scoped> feature [1] which isn't even supported yet (AFAIK) doesn't really address the issue. The result is that you're constantly building a bigger and bigger localized CSS reset for your widget and trying to win the specificity arms-race against the host page.
I would love that feature.
[1] http://dev.w3.org/html5/spec-author-view/the-style-element.h...
Basically, your widget should be like a weaker version of the shadow DOM of replaced elements (buttons, textboxes etc), you supply good default styles but they have to be overridable by the page.
I can tell that you've never had to deal with this problem before. :)
Ignoring useragent styles for a moment, it's not uncommon for pages to declare broad styles like:
p { text-shadow: 0 1px 0 #000; }
h1, h2, h3 { text-transform: uppercase; }
a { color: red; }
input { margin-bottom: 2em; }
And it's likely that these styles are perfectly readable on the page. Now the author adds your widget, and suddenly your widget is also subject to these styles. If your widget is complex – think "mini app", not "ad unit" – you now have to reset every single possible CSS property for the widget to be usable on every site, and in a way that gives it the highest specificity compared to other selectors used by other page styles.I wasn't thinking inherit: none would disable a useragent's default styles. Just other styles directly on the page. But it's certainly not that simple to define those semantics.
You just apply that to each property you want to reset. You might think that applying it to EVERY property is a nightmare but in many cases you wouldnt need to. Disqus, for example, operates in your own CSS so it can look native to the page. They only have to override a few properties to assure their layout is good.
So yeah, while `inherit:none` would be awesome, I think `prop: initial` gets us most of the way there.
Also related: https://github.com/premasagar/cleanslate
1. Supporting IE7, for which people tend to use an intermediate Flash object to do the communication.
2. There's still the content size problem. Does your IFRAME'd widget change size? Now you need to detect all size changes with JavaScript and send them back to the host page so it can resize the IFRAME.
3. Is your widget non-rectangular or concave? For instance, can it pop out a menu of a different size than the widget itself? Well, now you need an additional IFRAME for each piece that sticks out.
HTML badly needs native DatePickers, ComboBoxes, Sliders, Tabs, Multi-Buttons, DropDowns etc.
In 2011 we shouldn't have to deal with less-than-half-baked javascript monstrosities to display a basic input widget.
[1] See http://wufoo.com/html5/ for "The current state of HTML5 forms"
For example, this is how sliders really should look like: http://worrydream.com/Tangle/
We need trees. We need pure-HTML drag-and-drop support. We need simple components that can be combined to create complex, usable interfaces.
Also, while HTML5 supports all the different types you described, very few browsers actually render them this way.
I would also add not just date selectors, but also date range selectors and time selectors as well. These are non-trivial and are so often broken.
My list would be something like:
1) Standards compliance. Validated HTML and CSS.
2) Don't force your design on my browser. Let me set fonts; colours; sizes; margins; etc.
3) Please god let flash die.
4) Allow me to pay a subscription to opt out of ads.
5) Simplify design. I'm usually interested in the content. Design often gets in the way of the content.
There's probably a million more.
It would be great if that could be done along with the removal of all the hacks that showed up while the browser was still a document viewer, but that's not likely.
I'd like to see the two problems (application platform, interlinked document platform) split cleanly.
Add a Javascript API to enable a web app to open a TCP socket (as opposed to WebSocket) with the origin server.
This is a seriously scary concept. It has all the same dangers as the automatic-file-opening did in Outlook.
It can probably be done securely, but wow, that's not an easy problem.
1. Full Device api / OS integration, basically phonegap supported natively in browsers, some support is slowly trickling though, I never understood why its taking such a long time though
2. Fix whatever performance problems make building RIA really damn hard. Some people say this problem is inherent to javascript + dom and cant be fixed, I am not sure, I do know browsers were making amazing steps over the last year or 2 and have mitigated it a lot, but its not quite there, in particular GC stalls are incredibly hard to work around.
a little button with a picture of a cookie that popped open a window showing what cookies were being sent on a page, and what those values are, with options to kill them.
that alone would make it easier for people to understand what the hell data is being tracked about them, feel more in control, and (possibly) prevent stupid legislation from being pushed written by people who haven't the vaguest clue about what cookies are.
It could save newspapers. It could change the Web from an advertiser-oriented medium (like TV) to a user-oriented medium (like iPod/iPad apps).
Know someone with IE7 or IE8, get them off of it.
What if a web-specific StackOverflow-like site could (securely) display arbitrary examples? What if a social network status update could contain live code, but that code couldn't break out of the update?
it adds date negotiation in the vein of content negotiation to http. it is like browser support for the wayback machine.
(Something like Microsoft's HTML Components (HTC) - http://msdn.microsoft.com/en-us/library/ms531018(v=vs.85).as... )
And don't make me download/install an addon, because odds are you just caused my support expense to blow up by 10x.