fixed IE8 setOpacity

This commit is contained in:
javi 2013-02-13 12:55:22 +01:00
parent 664b47b06d
commit ca0864ef3e
3 changed files with 18 additions and 22 deletions

View File

@ -14,6 +14,7 @@
android = ua.indexOf('android') !== -1, android = ua.indexOf('android') !== -1,
android23 = ua.search('android [23]') !== -1, android23 = ua.search('android [23]') !== -1,
ie7 = ie && !document.querySelector && ua.search('msie 7') !== -1, ie7 = ie && !document.querySelector && ua.search('msie 7') !== -1,
ie8 = ie && ua.search('msie 8') !== -1,
mobile = typeof orientation !== undefined + '', mobile = typeof orientation !== undefined + '',
msTouch = window.navigator && window.navigator.msPointerEnabled && msTouch = window.navigator && window.navigator.msPointerEnabled &&
@ -63,6 +64,7 @@
ie: ie, ie: ie,
ie6: ie6, ie6: ie6,
ie7: ie7, ie7: ie7,
ie8: ie8,
webkit: webkit, webkit: webkit,
android: android, android: android,

View File

@ -141,18 +141,12 @@ L.DomUtil = {
}, },
setOpacity: function (el, value) { setOpacity: function (el, value) {
if ('opacity' in el.style) { if ('opacity' in el.style) {
el.style.opacity = value; el.style.opacity = value;
} else if ('filter' in el.style) { } else if ('filter' in el.style) {
var filterName = 'alpha';
var filter = false,
filterName = 'DXImageTransform.Microsoft.Alpha';
value = Math.round(value * 100); value = Math.round(value * 100);
el.style.filter = filterName + '(opacity=' + value + ')';
el.style.filter = ' progid:' + filterName + '(opacity=' + value + ')';
} }
}, },

View File

@ -186,14 +186,20 @@ L.TileLayer = L.Class.extend({
}, },
_updateOpacity: function () { _updateOpacity: function () {
if (!L.Browser.ie7) {
L.DomUtil.setOpacity(this._container, this.options.opacity);
}
// stupid webkit hack to force redrawing of tiles
var i, var i,
tiles = this._tiles; tiles = this._tiles;
if (!L.Browser.ie7 && !L.Browser.ie8) {
L.DomUtil.setOpacity(this._container, this.options.opacity);
} else {
for (i in tiles) {
if (tiles.hasOwnProperty(i)) {
L.DomUtil.setOpacity(tiles[i], this.options.opacity);
}
}
}
// stupid webkit hack to force redrawing of tiles
if (L.Browser.webkit) { if (L.Browser.webkit) {
for (i in tiles) { for (i in tiles) {
if (tiles.hasOwnProperty(i)) { if (tiles.hasOwnProperty(i)) {
@ -202,13 +208,6 @@ L.TileLayer = L.Class.extend({
} }
} }
if (L.Browser.ie7) {
for (i in tiles) {
if (tiles.hasOwnProperty(i)) {
tiles[i].style.filter = 'alpha(opacity=' + (this.options.opacity * 100) + ')';
}
}
}
}, },
@ -482,8 +481,9 @@ L.TileLayer = L.Class.extend({
_createTile: function () { _createTile: function () {
var tile = this._tileImg.cloneNode(false); var tile = this._tileImg.cloneNode(false);
tile.onselectstart = tile.onmousemove = L.Util.falseFn; tile.onselectstart = tile.onmousemove = L.Util.falseFn;
if (L.Browser.ie7 && this.options.opacity !== undefined) { // in IE7 and IE8 should be set per tile
tile.style.filter = 'alpha(opacity=' + (this.options.opacity * 100) + ')'; if ((L.Browser.ie7 || L.Browser.ie8) && this.options.opacity !== undefined) {
L.DomUtil.setOpacity(tile, this.options.opacity);
} }
return tile; return tile;