Web specifications supported in Opera 6
Opera HTML support
Opera version 6 supports HTML 4.01 with these exceptions:
Intrinsic event attributes
These attributes are not supported:
- Any event attribute for option
- ondblclick
These form elements are not supported: visual feedback
for button, label, legend.
These form attributes are not supported: accept,
accept-charset, for.
Table elements
Opera supports HTML 3.2 style table elements fully (ie. table,
caption, tr,
th and td).
Opera handles tfoot properly (it is always
displayed at the bottom at a table), otherwise Opera doesn't support the
new HTML 4.01 elements (col, colgroup,
thead, tfoot,
tbody) and attributes (abbr,
axis, char, charoff,
frame, headers,
rules and scope).
Opera doesn't assign styles to the grouping elements (tbody,
tfoot and thead).
Other issues
- The a element attributes coords,
charset, and hreflang
and shape.
- The frameborder attribute is not supported.
- The bidirectional override element bdo and
the dir attribute. The lang
attribute is not supported (in for instance q).
- The attributes accesskey, tabindex
are not supported.
- Opera supports object, but not the attributes
align, classid,
codebase, codetype
and standby. For plug-ins embed
is used.
- Opera doesn't support the applet attributes
align and archive
- Opera has no particular support for link apart
from rel="stylesheet", nor for the
meta attribute scheme
or the head attribute profile.
- The deprecated hr noshade
attribute has no effect, neither does the deprecated attribute compact.
CSS should be used for this.
- Opera follows the HTML 4.01 specification for script
and noscript. If any script element
doesn't execute, all subsequent noscript element are displayed.
CSS support
Opera 6 supports all of CSS1.
Opera 6 supports all of CSS2 with
the exception of:
- Opera 6 is a visual browser and does not support Aural CSS
- these properties: clip, cursor, direction, font-size-adjust,
font-stretch, marker-offset,
marks, text-shadow, unicode-bidi,
and all outline properties
- Linux only: the system values on the font
property as well as system colors
- the values added to list-style-type in CSS2
- these property/value combination: 'display: marker', 'text-align: <string>',
'visibility: collapse', 'content: <url>', 'overflow: scroll', 'overflow:auto'
- named pages (as described in section
13.3.2)
- the '@font-face' construct
All CSS2 selectors are supported with the exception of:
- :first-child, :focus, :lang
- combinations with pseudo-classes before other selectors
Some differences of style from Internet Explorer and Netscape
When using the Opera browser, you may notice that some pages are
displayed differently than in other browsers. In most cases, the differences
are caused by errors in the pages that are being displayed. Few Web pages are
authored according to W3C's specifications which Opera supports. Opera tries,
to some extent, to replicate the errors in browsers from Netscape and
Microsoft, but we prioritize implementing the specificaions. For a list of
rendering differeces between Opera and Netscape/Microsoft, please read below.
- The color of an HR in Opera is a background property, and Opera accepts
all background styles as well as generated content. In NN4 and IE it is a
foreground property (color). NN6 does the right thing too (there is a difference
between Opera and NN6 if generated content, :before and :after, is used).
- Link underlines can be different in Opera and NN6 than older browsers (the
underline one color, the text another). This is a consequence on CSS2 rules
on text-decoration.
- IE5/Windows is mistaken in their handling of height and width properties,
in effect making Opera (and NN6) boxes appear larger. This is fixed in IE6
in compliant mode.
- IE5 also has an issue with positioning, as a positioned element should be
positioned to the nearest containing
positioned element, not the containing element.
- Positioning of background images is relative to the element box, not the
window. This means that in Opera, a image placed with
body{background-position:
center center} will be roughly in the middle of a page, not in the
middle of the window.
- You would normally want to apply padding to the body
element, and not margin (which is the margin between the body
and the head/html
elements).
- Preformatting of blocklevel content. The allowed content in PRE is inline,
not block. This means that content will not be preformatted when a block level
element (like a headline) appears,
<pre>Pre-formatted<h3>Headline</h3>Not
pre-formatted</pre> . In NN and IE <h3>Headline</h3>Not
pre-formatted</pre> will be preformatted too.
- Note that while it is possible to style form controls in Opera, you can't
make them look like anything other than form controls, eg by setting background
color. The CSS specification doesn't require form control widgets to be styleable,
and that can be in breach with the operating system UI guidelines. We still
plan to support it one day.
- While Netscape 6 is a great leap forward in standards compliance relative
to the Netscape 4 series, Mozilla is better. For more information on Mozilla,
see the Mozilla site.
- The CSS improvements in IE6 are already implemented in Opera. This means
that IE6's display of web pages in standards-compliant mode is much closer
to Opera's web page display. For further information, see the Microsoft
documentation on IE6.
External Opera CSS conformance charts
This external site offer conformance information on Opera 5: Eric Meyer's Mastergrid.
CSS extensions for XML
Opera 6 uses CSS-like properties to attach information to XML elements that
cannot otherwise be represented. Three extension properties have been implemented
to allow hyperlinks and images to be included in XML documents. Most often it's
better for authors to use XHTML -- rather than the properties described below
-- to represent document semantics, but they are described here for reference:
Property:
| -set-link-source
|
Values:
| none | attr(<attribute-name>) | content()
|
Initial:
| none
|
Inherited:
| no
|
Description:
| This property sets the value of the 'link' variable which
can later be used to generate a link through the 'opera-use-link-source'
property.
|
Property:
| -use-link-source
|
Values:
| none | current | next
|
Initial:
| none
|
Inherited:
| no
|
Description:
| This property sets the element to be a source anchor and,
if so, declares which value of the 'link' variable that should be used:
the current or the next.
|
Property:
| -replace
|
Values:
| none | attr(x)
|
Initial:
| none
|
Inherited:
| no
|
Description:
| This property declares the element to be replaced or not.
If replaced, the attr() function is used to point to the attribute where
the URI to the content can be found.
|
In addition Opera accepts a non-standard value for the CSS2 white-space
property, namely white-space: -pre-wrap . This value is exactly
like white-space: pre with the exception that lines will wrap if
wider than the containing box. This is particularily handy for plain-text
formats with unpredictable position of line break characters, like e-mail messages.
Unlike the other white-space settings however, -pre-wrap will display
tab characters like small boxes.
XML support
Opera 6 can parse and display XML documents. Documents with Content-type "text/xml"
will be treated as an XML document. If a Content-type is not available, the
".xml" file extension will also make the document be treated as XML.
XML and CSS
In order to display an XML document, a CSS style sheet should be present. Authors
can attach style sheets to their XML documents through a processing instruction.
Here is a simple example:
<?xml version="1.0"?>
<?xml-stylesheet href="shakespeare.css" type="text/css"?>
If no style sheet is present and the page is not namespaced to HTML, Opera
6 will use the initial values on all CSS properties to display the document.
All elements will be inline, and all text will be rendered in the same font.
XSL and XSLT
Opera does not support XSL formatting objects, and neither does it natively
support XSLT transformations. XML documents transformed server side will be
parsed and displayed by Opera just like any other XML document. For an opinion
on client side XSL-FO, see Formatting
Objects Considered Harmful.
XML namespaces
Opera 6 supports XML namespaces. The most common
use of namespaces is for XHTML processing. From Opera 4, the temporary
HTML namespace (http://www.w3.org/TR/REC-html40) is recognized, from Opera 5.1
the XHTML namespace (http://www.w3.org/1999/xhtml) is recognized too.
XHTML support
There are two "modes" of XHTML support, one where the document has the text/html
content type and one where it is text/xml , application/xml
or application/xhtml+xml . In the first case the document is handles
as any other HTML document (giving de facto support for XHTML 1.0, XHTML Basic
and XHTML 1.1). In the second case XHTML will be treated as XML with predetermined
functionality for HTML elements and attributes. In "XML mode" Opera has the
following additional exceptions:
- base
- script and event handlers
- style (use the xml-stylesheet processing instruction
instead)
WML 1.2 support
Opera 6.0 supports all Wireless Markup Language (WML) elements, but still lacks
support for the following attributes:
- The accesskey and tabindex
- The iname and ivalue
for select
- The emptyok and format
for input
- The localsrc for img
The rendering of WML documents is controlled with a CSS style sheet called
"wml.css" in Opera's installation directory. When editing this file you will
need to restart Opera for the changes to take effect.
ECMAScript support
ECMAScript is the standardized version of JavaScript Core. It
is being standardized through the ECMA standards body. ECMAScript does not include
browser and document related objects, these are specified in a
separate document.
Opera 5 supports the entire ECMA-262 2ed standard. It is more or less aligned
with JavaScript 1.3. The following items are missing for Opera 6 to have complete
JavaScript 1.3 Core support:
- The Locale methods
- Complete implementation of the RegExp object
- Enumeration of built-in objects
Opera also supports most of the ECMA-262 3rd edition that is roughly aligned
with Netscape's JavaScript 1.4 Core.
JavaScript environment: DOM and DHTML
The following features are missing from JavaScript 1.3 support:
- the event variable passed to event handlers does not match the javascript
standard
- cannot set the SRC attribute of iframes
We are currently working on DOM, based on the DOM 2.0 standard. We have also
used some of Microsoft's extensions to DOM, notably the method for accessing
CSS properties through a style attribute of the HTML elements. Modifying the
document structure is not yet possible (ie. you cannot add or remove HTML elements).
There are no plans to support Netscape's dynamic layers. Presently, we support
getting and setting the following CSS attributes for absolutely positioned HTML
elements:
- visibility
- pixelLeft, pixelTop
- pixelWidth, pixelHeight
- zIndex
- color, background (only for setting of colors)
We support the following methods in the document object:
- getElementsByTagName()
- getElementById()
- getElementsByName()
We support the following methods in HTML Elements:
- getElementsByTagName()
- contains()
- parentNode
Support for JavaScript and JScript objects
Described in a separate document. Opera does not
support W3C DOM Core apart from the methods mentioned above. Documentation on
W3C DOM/HTML support is forthcoming.
Networking protocols support
Opera 6 has full support for HTTP 1.0 and HTTP 1.1. Here are some highlights:
- Persistent connections (multiple request/response through one connection),
- Cachecontrol for no-cache (always check for fresh document) and no-store
(don't save to disk),
- Basic Authentication (passwords). Supports Digest Authentication,
excepting integrity check on body. No current plans to support NTLM,
- Resume download, provided the server supports it,
- SSL/TLS support (also through proxy/firewall),
- Proxy for HTTP, FTP, Gopher and WAIS.
Encryption: 128 bit encryption (RSA key exchange only) for the Secure Sockets
Layer (SSL) versions 2 and 3, and the successor Transport Layer Security (TLS)
v1.0. This is supported for HTTP (web), NNTP (news), POP and SMTP (e-mail).
Support for generating private keys and submitting certificate requests.
News: simple online newsreader with support for encrypted newsservers
and newsserver with passwords. Can decode single article attachments,
MIME or uuencoded.
FTP including resume download is supported.
It is possible to download to file for both FTP and HTTP.
Text and internationalization
Unicode support in Opera
Opera can work with all the characters in the Unicode specification. All text
communicated to Opera from the network is converted into Unicode.
In order for Opera to render Unicode characters, the needed glyphs
have to be available in the fonts on your system. This might be a problem for
older Windows systems. For information on available fonts, see Unicode
fonts for Windows computers.
Opera 6.0 implements the following writing system related functionality:
- font-switching, needed in order to display characters that the current
font does not include.
- line-breaking, needed in order to break scripts written without spaces,
such as Chinese, Korean, and Japanese.
Opera relies on the operating system to perform:
- character shaping, contextual glyph selection, ligature forming,
character stacking, combining character support etc.
Legacy encoding support
Although Opera works with Unicode (UTF-16), most text on the Internet is encoded
in legacy encodings, e.g. ISO 8859-1, Windows-1251, Shift-JIS, EUC-KR. Opera
handles this by detecting the character encoding used, and converting it to
UTF-16. The user has three options for how to handle these pages.
- Auto-detect
- In this mode Opera will attempt to detect the encoding used by the page.
If the transport protocol provides an encoding name, that is used. If not,
Opera will look at the page for a charset declaration. If this is missing,
Opera will attempt to auto-detect the encoding, using the domain name to see
if the script is a CJK script, and if so which one. Opera can also auto-detect
UTF-8.
- Writing script auto-detect
- In this mode the user can tell that this is a Japanese or Chinese page,
but that the encoding is unknown. Opera will then analyze the text in the
page to determine which encoding is used.
- Encoding override
- In this mode the user selects an encoding. This encoding will be used by
Opera, regardless of what the page and transport protocol claims is the encoding
for the page.
This table shows all the legacy encodings Opera supports in addition to Unicode:
Encoding
| Category
| Comments
|
ISO 8859-1
| Latin
|
|
ISO 8859-2
| Latin
| Used in Eastern Europe
|
ISO 8859-3
| Latin
| Rare
|
ISO 8859-4
| Latin
| Sami and Baltic country
|
ISO 8859-9
| Latin
| Turkish
|
ISO 8859-10
| Latin
| Inuit, Sami, and Icelandic
|
ISO 8859-13
| Latin
| Rare
|
ISO 8859-14
| Latin
| Celtic
|
ISO 8859-15
| Latin
| Intended to supersede 8859-1
|
Windows-1250
| Latin
| Used in Eastern Europe
|
Windows-1252
| Latin
|
|
Windows-1254
| Latin
| Turkish
|
Windows-1257
| Latin
| Baltic
|
Windows-1258
| Latin
| Vietnamese
|
VISCII
| Latin
| Vietnamese
|
IBM 866
| Cyrillic
|
|
ISO 8859-5
| Cyrillic
|
|
koi8-r
| Cyrillic
|
|
koi8-u
| Cyrillic
| Ukranian version of koi8-r
|
Windows-1251
| Cyrillic
|
|
ISO 8859-6
| Arabic
|
|
Windows-1256
| Arabic
|
|
ISO 8859-7
| Greek
|
|
Windows-1253
| Greek
|
|
ISO 8859-8
| Hebrew
|
|
Windows-1255
| Hebrew
|
|
ISO 8859-11
| Thai
| Also known as TIS-620
|
Windows-874
| Thai
| Extension of ISO 8859-11
|
utf-8
| Unicode
|
|
utf-16
| Unicode
|
|
Shift-JIS
| Japanese
|
|
ISO-2022-JP
| Japanese
|
|
EUC-JP
| Japanese
|
|
Big 5
| Chinese
|
|
EUC-CN
| Chinese
| Also erroneously known as GB 2312
|
HZ-GB-2312
| Chinese
| Primarily used in e-mail
|
EUC-TW
| Chinese
|
|
GBK
| Chinese
| EUC-CN extension
|
EUC-KR
| Korean
|
|
Graphics support
Opera supports GIF89a, JPEG, BMP, WBMP and has full
support for PNG including alpha channel (degrees of transparency) and gamma
support (device independent colors).
|