What’s New in Opera Development Snapshots: 4 November 2011 Edition

Most of the updates that will feature in Opera 12 are in a new intermediate version Opera 11.60, whose snapshot has just been released.

Do note that unlike before, we have a build that is not in Opera Next. So, make sure you follow instructions so that it does not erase your default install of Opera.

Do note that hardware acceleration and WebGL have been disabled. But here are some of the new features/bug fixes you can play with:

  • Support for HTML5 Custom Scheme and Content Handlers

    Mike Taylor writes in detail how this feature will work – in short you can tell fastmail or gmail to be used as your default app to compose an email when you click on a "mailto:" link.

  • Image Resampling Now Available!

    Though this property is now in CSS4 Images spec, there is enough implementation out there in the wild to merit implementation. image-rendering hints to the browser which properties are most important to preserve when scaled so the browser can use the most appropriate scaling algorithm. This can speed up some of the canvas games if using a faster scaling algorithm. The values you can use are optimizeSpeed, optimizeQuality and -o-crisp-edges. This property can be used on img, canvas, background-image and -o-border-image. Here is an example of image scaling in action.

  • XHR.send(ArrayBuffer)

    We have native implementation of EcmaScript typed arrays, including the ArrayBuffer type. Now, you can send ArrayBuffers from an Ajax Request.

  • Clicking on a label for file input now triggers the file selection dialog too!

  • document.all now outputs unknown elements

    If you had an unknown element (say <foo id=fooid><foo>), using document.all('fooid') would not output this unknown element. This has now been fixed.

  • Support for script.onerror and window.onerror

    In case your script is unable to load, you can provide what further action to take in script.onerror. Now Opera also supports window.onerror.

  • Text Selection Cursor at last!

    This used to annoy me to no end. Finally, like all other browsers, Opera will render text selection cursor when selecting text. Try it!

  • Correct offsetLeft value in edge cases

    When checking offsetLeft, Opera used to assume text-align: left is always set on the parent so it would obtain the wrong value. This is no longer the case.

  • Transition Updates

    visibility property is typically used in conjunction with another property to show/hide elements. Now the behaviour matches that of Webkit implementations which is much easier for authors to work with. Here is an example of this.

    A windows bug with transistions and transforms has also been fixed.

  • Better Selectors and selector serialisation

    :root:not(:only-child) did not match :root. But now it does.

    No idea why anyone would want to match 128th child element, but :nth-child(128) did not select correctly. But this has been fixed and it does. Enjoy all you CSS manglers!

    When doing cssRules[0].selectorText, if the selector had :nth-child(0n), it was dropped from the serialisation and hence caused an error. This has now been fixed. Similarly, [attr=\""] was incorrectly serialized as [attr="""], but now it serializes to [attr="\""].

  • Fixes to Table-cell baseline

    The baseline was not set to the bottom of the content edge of the cell box if there is no baseline found in first inflow-line or block or float (here is an example). Also, the top of a block element was treated as the baseline for a cell which has now been fixed (here is an example).

  • new Event('hurrayscream')

    With DOMCore spec, there is a new way of initializing events with constructors. You can now do new Event('foo');, or new Event('foo', {bubbles: true}).

  • Text in textarea now wraps

    If long words with no whitespace breaks are entered into a textarea, opera outputs a scrollbar instead of breaking the word at the end of the line. This has now been fixed.

Please do try it out and let us know if any of these do not work for you, or any other suggestions you might have!