<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: css3</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/css3.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2018-06-01T14:54:30+00:00</updated><author><name>Simon Willison</name></author><entry><title>Side-channel attacking browsers through CSS3 features</title><link href="https://simonwillison.net/2018/Jun/1/side-channel-css3/#atom-tag" rel="alternate"/><published>2018-06-01T14:54:30+00:00</published><updated>2018-06-01T14:54:30+00:00</updated><id>https://simonwillison.net/2018/Jun/1/side-channel-css3/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.evonide.com/side-channel-attacking-browsers-through-css3-features/"&gt;Side-channel attacking browsers through CSS3 features&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Really clever attack. Sites like Facebook offer iframe widgets which show the user’s name, but due to the cross-origin resource policy cannot be introspected by the site on which they are embedded. By using CSS3 blend modes it’s possible to construct a timing attack where a stack of divs layered over the top of the iframe can be used to derive the embedded content, by taking advantage of blend modes that take different amounts of time depending on the colour of the underlying pixel. Patched in Firefox 60 and Chrome 63.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sidechannel"&gt;sidechannel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/timing-attack"&gt;timing-attack&lt;/a&gt;&lt;/p&gt;



</summary><category term="css3"/><category term="security"/><category term="sidechannel"/><category term="timing-attack"/></entry><entry><title>Why weren't the features of Sass originally built into CSS?</title><link href="https://simonwillison.net/2012/Aug/13/why-werent-the-features/#atom-tag" rel="alternate"/><published>2012-08-13T15:53:00+00:00</published><updated>2012-08-13T15:53:00+00:00</updated><id>https://simonwillison.net/2012/Aug/13/why-werent-the-features/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/Why-werent-the-features-of-Sass-originally-built-into-CSS/answer/Simon-Willison"&gt;Why weren&amp;#39;t the features of Sass originally built into CSS?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is not a straight-forward issue: CSS has a very long, complicated history. A good starting point for understanding the reluctance of the CSS working group to add variables/constants etc to CSS is this essay by Bert Bos of the W3C (entitled Why “variables” in CSS are harmful) &lt;span&gt;&lt;a href="http://www.w3.org/People/Bos/CSS-variables"&gt;http://www.w3.org/People/Bos/CSS...&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/frontend"&gt;frontend&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sass"&gt;sass&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="css"/><category term="css3"/><category term="web-development"/><category term="quora"/><category term="frontend"/><category term="sass"/></entry><entry><title>Scribd in HTML5</title><link href="https://simonwillison.net/2010/May/7/scribd/#atom-tag" rel="alternate"/><published>2010-05-07T12:09:00+00:00</published><updated>2010-05-07T12:09:00+00:00</updated><id>https://simonwillison.net/2010/May/7/scribd/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.scribd.com/documents/30964170/Scribd-in-HTML5"&gt;Scribd in HTML5&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Outstanding piece of engineering work from Scribd—they can now render documents using HTML, webfonts and a ton of CSS absolute positioning (using ems rather than pixels) instead of Flash. Nothing to do with HTML5 of course, which is rapidly replacing Ajax as the most mis-applied terminology on the Web. That nit-pick feels pretty insignificant compared to their overall achievement though—being able to convert any formatted document (.doc, pdf etc) in to HTML and CSS that displays correctly is a real leap forward.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scribd"&gt;scribd&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webfonts"&gt;webfonts&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="css3"/><category term="html"/><category term="html5"/><category term="scribd"/><category term="recovered"/><category term="webfonts"/></entry><entry><title>Pure CSS3 Spiderman Cartoon w/ jQuery and HTML5</title><link href="https://simonwillison.net/2010/May/4/animation/#atom-tag" rel="alternate"/><published>2010-05-04T19:27:00+00:00</published><updated>2010-05-04T19:27:00+00:00</updated><id>https://simonwillison.net/2010/May/4/animation/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.optimum7.com/internet-marketing/web-development/pure-css3-spiderman-ipad-cartoon-jquery-html5-no-flash.html"&gt;Pure CSS3 Spiderman Cartoon w/ jQuery and HTML5&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Great demo, though calling -webkit-animation HTML5 (or even CSS3) is a bit of a stretch...


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/animation"&gt;animation&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jquery"&gt;jquery&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webkitanimation"&gt;webkitanimation&lt;/a&gt;&lt;/p&gt;



</summary><category term="animation"/><category term="css"/><category term="css3"/><category term="html5"/><category term="javascript"/><category term="jquery"/><category term="recovered"/><category term="webkitanimation"/></entry><entry><title>Internet Explorer Platform Preview Guide for Developers</title><link href="https://simonwillison.net/2010/Mar/16/preview/#atom-tag" rel="alternate"/><published>2010-03-16T18:36:38+00:00</published><updated>2010-03-16T18:36:38+00:00</updated><id>https://simonwillison.net/2010/Mar/16/preview/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/ie/ff468705.aspx"&gt;Internet Explorer Platform Preview Guide for Developers&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Lots of SVG and CSS3 stuff, no mention of canvas here either though.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://ie.microsoft.com/testdrive/info/ReleaseNotes/Default.html"&gt;IE testdrive preview release notes&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/canvas"&gt;canvas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html5"&gt;html5&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ie9"&gt;ie9&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/internet-explorer"&gt;internet-explorer&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microsoft"&gt;microsoft&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;&lt;/p&gt;



</summary><category term="canvas"/><category term="css3"/><category term="html5"/><category term="ie9"/><category term="internet-explorer"/><category term="microsoft"/><category term="svg"/></entry><entry><title>CSS 3: Progress!</title><link href="https://simonwillison.net/2009/Aug/22/css/#atom-tag" rel="alternate"/><published>2009-08-22T11:52:17+00:00</published><updated>2009-08-22T11:52:17+00:00</updated><id>https://simonwillison.net/2009/Aug/22/css/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://alex.dojotoolkit.org/2009/08/css-3-progress/"&gt;CSS 3: Progress!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Alex Russell on the new exciting stuff going in to CSS 3 based on real-world implementations in the modern set of browsers. Of particular interest is the new Flexible Box specification, which specifies new layout primitives hbox and vbox (as seen in XUL) and is already supported by both WebKit and Gecko.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/alex-russell"&gt;alex-russell&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/flexiblebox"&gt;flexiblebox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gecko"&gt;gecko&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hbox"&gt;hbox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vbox"&gt;vbox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webkit"&gt;webkit&lt;/a&gt;&lt;/p&gt;



</summary><category term="alex-russell"/><category term="browsers"/><category term="css"/><category term="css3"/><category term="flexiblebox"/><category term="gecko"/><category term="hbox"/><category term="standards"/><category term="vbox"/><category term="webkit"/></entry><entry><title>A brief introduction to Opacity and RGBA</title><link href="https://simonwillison.net/2008/Mar/17/brief/#atom-tag" rel="alternate"/><published>2008-03-17T02:00:44+00:00</published><updated>2008-03-17T02:00:44+00:00</updated><id>https://simonwillison.net/2008/Mar/17/brief/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.css3.info/a-brief-introduction-to-opacity-and-rgba/"&gt;A brief introduction to Opacity and RGBA&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The CSS opacity property is inherited by an element’s children; opacity set using the new rgba() declaration in CSS 3 differs in that it is not inherited.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opacity"&gt;opacity&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rgba"&gt;rgba&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="css3"/><category term="opacity"/><category term="rgba"/></entry><entry><title>CSS3 and the death of Handheld Stylesheets</title><link href="https://simonwillison.net/2007/Nov/16/russellbeattiecom/#atom-tag" rel="alternate"/><published>2007-11-16T09:53:22+00:00</published><updated>2007-11-16T09:53:22+00:00</updated><id>https://simonwillison.net/2007/Nov/16/russellbeattiecom/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.russellbeattie.com/blog/css3-and-the-death-of-handheld-stylesheets"&gt;CSS3 and the death of Handheld Stylesheets&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I hadn’t looked at CSS 3 media queries before (which let you apply different styles based on media features such as screen width, height and colour availability)—they seem like a much smarter solution that handheld stylesheets and also appear to be preferred by device vendors.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mediaqueries"&gt;mediaqueries&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mobile"&gt;mobile&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/russell-beattie"&gt;russell-beattie&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="css3"/><category term="mediaqueries"/><category term="mobile"/><category term="russell-beattie"/></entry><entry><title>lxml.cssselect</title><link href="https://simonwillison.net/2007/Sep/24/lxmlcssselect/#atom-tag" rel="alternate"/><published>2007-09-24T23:57:17+00:00</published><updated>2007-09-24T23:57:17+00:00</updated><id>https://simonwillison.net/2007/Sep/24/lxmlcssselect/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://codespeak.net/lxml/dev/cssselect.html"&gt;lxml.cssselect&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
lxml includes an implementation of CSS 3 selectors, which compiles them to XPath expressions. Should be a useful tool for parsing Microformats from Python.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://blog.ianbicking.org/2007/09/24/lxmlhtml/"&gt;Ian Bicking&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/libxml2"&gt;libxml2&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lxml"&gt;lxml&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/microformats"&gt;microformats&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/selectors"&gt;selectors&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xpath"&gt;xpath&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="css3"/><category term="libxml2"/><category term="lxml"/><category term="microformats"/><category term="python"/><category term="selectors"/><category term="xpath"/></entry><entry><title>Opera 9.5 (Kestrel)</title><link href="https://simonwillison.net/2007/Sep/4/opera/#atom-tag" rel="alternate"/><published>2007-09-04T10:49:00+00:00</published><updated>2007-09-04T10:49:00+00:00</updated><id>https://simonwillison.net/2007/Sep/4/opera/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://annevankesteren.nl/2007/09/kestrel-alpha"&gt;Opera 9.5 (Kestrel)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The latest Opera alpha includes a bunch of CSS3 features (including an almost full implementation of CSS3 Selectors) as well as the ability to use SVG for scalable background images.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/anne-van-kesteren"&gt;anne-van-kesteren&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opera"&gt;opera&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/opera95"&gt;opera95&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/releases"&gt;releases&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/selectors"&gt;selectors&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;&lt;/p&gt;



</summary><category term="anne-van-kesteren"/><category term="browsers"/><category term="css3"/><category term="opera"/><category term="opera95"/><category term="releases"/><category term="selectors"/><category term="svg"/></entry><entry><title>Firefox 1.5 developer highlights</title><link href="https://simonwillison.net/2005/Sep/11/firefox15/#atom-tag" rel="alternate"/><published>2005-09-11T13:46:19+00:00</published><updated>2005-09-11T13:46:19+00:00</updated><id>https://simonwillison.net/2005/Sep/11/firefox15/#atom-tag</id><summary type="html">
    &lt;p id="p-0"&gt;&lt;a href="http://www.mozilla.org/products/firefox/releases/1.5beta1.html"&gt;Firefox 1.5 Beta 1 is out&lt;/a&gt;, and is the most exciting browser release in a very long time. It comes with the Gecko 1.8 rendering engine, which includes a ton of interesting new features. New in this version (unless you've been tinkering with the Deer Park series):&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;SVG&lt;/li&gt;
 &lt;li&gt;Canvas&lt;/li&gt;
 &lt;li&gt;CSS3 Columns&lt;/li&gt;
 &lt;li&gt;JavaScript 1.6&lt;/li&gt;
&lt;/ul&gt;

&lt;p id="p-1"&gt;Let's take a look at these in turn.&lt;/p&gt;

&lt;h4&gt;SVG&lt;/h4&gt;

&lt;p id="p-2"&gt;The &lt;a href="http://www.mozilla.org/projects/svg/"&gt;Mozilla SVG project&lt;/a&gt; has been quietly chugging along for years now, but until quite recently you needed to download an entirely separate build of Mozilla to try it out. Firefox 1.5 is the first Firefox release to include it and opens up a whole new world of vector graphics to web developers. The &lt;a href="http://www.croczilla.com/svg/samples/"&gt;Croczilla Examples page&lt;/a&gt; is a great place to start - be sure to try the interactive demos near the bottom. There's more about Mozilla's SVG support &lt;a href="http://developer.mozilla.org/en/docs/SVG" title="SVG on Devmo"&gt;on the Mozilla Developer Centre&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;Canvas&lt;/h4&gt;

&lt;p id="p-3"&gt;The &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; element introduces a modern 2D drawing API to client-side development, with the promise of a 3D API in the future. It was invented by Apple for use in Dashboard widgets, then written up as &lt;a href="http://whatwg.org/specs/web-apps/current-work/#dynamic" title="5.1. Dynamic graphics: The bitmap canvas"&gt;a specification&lt;/a&gt; by the WHATWG to facilitate compatible implementations in other browsers. &lt;/p&gt;

&lt;p id="p-4"&gt;The potential for innovation with &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; is enormous. Demos are pretty thin on the ground at the moment, but this &lt;a href="http://ponderer.org/download/canvas_demo/"&gt;interactive demo&lt;/a&gt; by Darin Fisher hints at the things to come. The &lt;a href="http://mozilla.doslash.org/stuff/canvas/shell.html"&gt;Canvas shell&lt;/a&gt; is handy for playing with the API. Devmo has the beginnings of a great &lt;a href="http://developer.mozilla.org/en/docs/Canvas_tutorial"&gt;Canvas tutorial&lt;/a&gt;. &lt;a href="http://undefined.org/js/canvas0000.html"&gt;This thing&lt;/a&gt; (originally a Safari 1.3 demo) is pretty too.&lt;/p&gt;

&lt;p id="p-5"&gt;The ability for Firefox extensions to &lt;a href="http://weblogs.mozillazine.org/roc/archives/2005/05/rendering_web_p.html"&gt;render web pages to images&lt;/a&gt; using &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; should lead to some very cool new extensions in the future.&lt;/p&gt;

&lt;h4&gt;CSS3 Columns&lt;/h4&gt;

&lt;p id="p-6"&gt;The ability to create auto-flowing columns (famously achieved on &lt;a href="http://www.iht.com/"&gt;IHT.com&lt;/a&gt; using terrifyingly hairy JavaScript) has long been desired for the web - among other things it's a neat way of keeping line widths comfortably readable. The &lt;a href="http://www.w3.org/TR/2001/WD-css3-multicol-20010118/"&gt;CSS3 Multi-column layout module&lt;/a&gt; enables this ability, and Gecko 1.8 implements parts of it in the form of the &lt;code&gt;-moz-column-count&lt;/code&gt;, &lt;code&gt;-moz-column-width&lt;/code&gt; and &lt;code&gt;-moz-column-gap&lt;/code&gt; properties - the &lt;code&gt;-moz-&lt;/code&gt; prefix is &lt;a href="http://www.w3.org/TR/CSS21/syndata.html#q4" title="CSS 2.1: Syntax and basic data types"&gt;W3C approved syntax&lt;/a&gt; for vendor-specific CSS extensions. You can see columns in action on &lt;a href="http://weblogs.mozillazine.org/roc/archives/2005/03/gecko_18_for_we.html" title="Gecko 1.8 For Web Developers: Columns"&gt;Robert O'Callahan's blog&lt;/a&gt; (Robert implemented column support in Gecko). Devmo's &lt;a href="http://developer.mozilla.org/en/docs/CSS3_Columns"&gt;column documentation&lt;/a&gt; has further details.&lt;/p&gt;

&lt;h4&gt;JavaScript 1.6&lt;/h4&gt;

&lt;p id="p-7"&gt;According to &lt;a href="http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6"&gt;New in JavaScript 1.6&lt;/a&gt;, the new features are E4X support, Array extras and "Array and String generics". I can't find anything detailing what the latter means, but the first two are pretty interesting. E4X (aka &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" title="Standard ECMA-357"&gt;ECMAScript for XML&lt;/a&gt;) is a relatively new specification which promotes XML to a native data type. It lets you do things like this:&lt;/p&gt;


&lt;blockquote cite="http://www.mozdev.org/pipermail/greasemonkey/2005-September/005639.html"&gt;&lt;pre&gt;&lt;code&gt;
var x = &amp;lt;foo&amp;gt;&amp;lt;bar&amp;gt;baz&amp;lt;/bar&amp;gt;&amp;lt;/foo&amp;gt;;
alert(x.bar);
x.monkey = "good";
alert(x.toXMLString());

for each (var child in x) {
  alert(x.toXMLString());
}&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;

&lt;p id="p-8"&gt;(Example excerpted from &lt;a href="http://www.mozdev.org/pipermail/greasemonkey/2005-September/005639.html" title="[Greasemonkey] e4x (say horray)"&gt;Aaron's post&lt;/a&gt; to the Greasemonkey mailing list.)&lt;/p&gt;

&lt;p id="p-9"&gt;It isn't available within script tags by default: you have to explicitly turn it on with &lt;code&gt;&amp;lt;script type="text/javascript;e4x=1"&amp;gt;&lt;/code&gt;, presumably to preserve backwards compatibility with existing pages.&lt;/p&gt;

&lt;p id="p-10"&gt;Array extras consist of some new methods on the &lt;code&gt;Array&lt;/code&gt; class, the most interesting of which are &lt;code&gt;every()&lt;/code&gt;, &lt;code&gt;forEach()&lt;/code&gt;, &lt;code&gt;map()&lt;/code&gt;, &lt;code&gt;filter()&lt;/code&gt; and &lt;code&gt;some()&lt;/code&gt;. Each of these takes a function reference (i.e. a callback) as an argument and applies it to each item in the array in some manner. Fans of functional programming techniques will welcome these, and they can easily be enabled in older browsers by conditionally modifying &lt;code&gt;Array.prototype&lt;/code&gt;. WebReference.com has &lt;a href="http://www.webreference.com/programming/javascript/ncz/column4/index.html" title="Mozilla&amp;apos;s New Array Methods"&gt;a tutorial&lt;/a&gt; covering the new array methods.&lt;/p&gt;

&lt;p id="p-11"&gt;If anyone knows what "Array and String generics" are, please leave a comment!&lt;/p&gt;

&lt;p id="p-12"&gt;The above are just the highlights of Firefox 1.5 from a web developer's perspective. The improvements for regular users are also notable, including re-orderable tabs, caching of browser state for lightning-fast back and forward and lots of cosmetic (and performance) improvements for the Mac version. An &lt;a href="http://www.squarefree.com/burningedge/releases/1.5b1.html" title="What&amp;apos;s new in Firefox 1.5 Beta 1"&gt;unofficial changelog&lt;/a&gt; is available courtesy of the Burning Edge.&lt;/p&gt;

&lt;p id="p-13"&gt;Exciting times indeed.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/canvas"&gt;canvas&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/css3"&gt;css3&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="canvas"/><category term="css"/><category term="css3"/><category term="firefox"/><category term="javascript"/><category term="svg"/></entry></feed>