Opened 11 years ago

Closed 11 years ago

Last modified 11 years ago

#7658 closed task (fixed)

IE8: support changes to setting opacity

Reported by: Eugene Lazutkin Owned by: Eugene Lazutkin
Priority: blocker Milestone: 1.3
Component: DojoX GFX Version: 1.2beta
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by bill)

From Jayant Sai:

Regarding Opacity in IE8. Looks like the IE team just changed the syntax a little (http://blogs.msdn.com/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx)

#transparentDiv {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; --IE8
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50);   --IE6+7
opacity: .5; --EVERYONE ELSE!
}

Note the quotes and the prefix.

Regarding VML IE8:

if(!document.documentMode || document.documentMode<8) {
  document.createStyleSheet().addRule('v\\:*', "behavior: url(#default#VML);");
}

if(document.documentMode && document.documentMode>=8) {
  document.writeln('<?import namespace="v" implementation="#default#VML" ?>');
}

Change History (9)

comment:1 Changed 11 years ago by Eugene Lazutkin

Component: DojoX GFXCore
Description: modified (diff)
Status: newassigned

This ticket covers two things in the core:

  • Opacity settings.
  • VML support.

comment:2 Changed 11 years ago by Eugene Lazutkin

Summary: gfx: support for IE8 changesSupport for IE8 changes

comment:3 Changed 11 years ago by Douglas Hays

None of the opacity styles in IE8 seem to work with strict DOCTYPE

comment:4 Changed 11 years ago by cgriego

There's a better solution to this. The problem is that IE8 no longer supports v\:* as a CSS selector, which is just another way of doing the <?import ?>, but you can also achieve the same thing by passing the behavior to import as a third parameter to document.namespaces.add in hostenv_browser.js, that will work across all versions of IE.

Before:

try{
	document.namespaces.add("v","urn:schemas-microsoft-com:vml");
	document.createStyleSheet().addRule("v\\:*", "behavior:url(#default#VML)");
}catch(e){}

After:

try{
	document.namespaces.add("v","urn:schemas-microsoft-com:vml","#default#VML");
}catch(e){}

comment:5 Changed 11 years ago by bill

Component: CoreGeneral
Description: modified (diff)
Milestone: future1.3
Summary: Support for IE8 changesIE8: support changes to setting opacity
Type: enhancementtask

You need to use quotes for the -ms-filter (for IE8 in strict DOCTYPE mode). I just fixed the example in the description.

See also http://www.quirksmode.org/css/opacity.html

comment:6 Changed 11 years ago by bill

We've had a number of checkins for this (on the HTML side). I think this ticket is finished except for VML.

comment:7 Changed 11 years ago by Eugene Lazutkin

Component: GeneralDojoX GFX
Priority: normalhighest

Reclassifying this ticket as DojoX GFX one to implement VML-related changes.

comment:8 Changed 11 years ago by Eugene Lazutkin

Resolution: fixed
Status: assignedclosed

comment:9 Changed 11 years ago by bill

(In [16479]) Apparently IE8 has decided to support filter: just like IE6 and IE7, so no need for the -ms-filter clauses, which are actually interfering when IE8 is in IE7 compatibility mode.

Fixes #8470, refs #7658.

Note that DojoX dialog's underlay now works (refs #8090) but it still has other issues, namely that the dialog contents are hidden (ie, the dialog is all white)

Note: See TracTickets for help on using tickets.