1.select z-index的div IE下面zorder的问题
第三步中,页面上有select标签(饰品),如果有新的div,比如“使用帮助”、“预览”thickbox,新的弹出div是基于z-index很大,实现效果,但是在ie会出现问题。因为select不会藏在z-index高于他的div下面,所以实现方案:
var useScrewedZOderHack = false;
if(BrowserDetect.browser == "Explorer") {
useScrewedZOderHack = true;
}
function doZOrderHack() {
if(!useScrewedZOderHack) {
return;
}
hHiddenFormElements = [];
var selects = document.getElementsByTagName("select");
for(var i=0;i<selects.length;i++) {
var sel = selects[i];
if(sel.style.display != 'none') {
hHiddenFormElements.push(sel);
sel.style.display = 'none';
}
}
}
function rollbackZOrderHack() {
if(!useScrewedZOderHack) {
return;
}
for(var i=0;i<hHiddenFormElements.length;i++) {
var sel = hHiddenFormElements[i];
sel.style.display = '';
}
}
BrowserDetect.js:http://www.quirksmode.org/js/detect.html
2.透明背景png图片在ff下面正常,ie下面不正常的问题
ff能正确显示带Alpha通道的PNG图片. 后来才发现其实IE也可以做到.
IE5.5的滤镜 progid:DXImageTransform.Microsoft.AlphaImageLoader(src=图片地址, sizingmethod=scale) 可以用来读取透明的PNG图象.
var useAlphaHack = false;
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
useAlphaHack = true;
}
3.属性overflow的问题
for some reason the border width gets included in the offset when overflow=hidden
overflow 标签
参考语法:
overflow : visible | auto | hidden | scroll
参数:
visible : 不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto : 此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden : 不显示超过对象尺寸的内容
scroll : 总是显示滚动条
var overflowHack = true;
/*
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
overflowHack = false;
}
*/
recalibrateCanvas: function() {
var _this = this;
window.setTimeout( function() {
//var pos = Position.cumulativeOffset(_this.canvas);
var pos = Position.cumulativeOffset(_this.sb.editorPane);
if(overflowHack) {
_this.canvas_x = pos[0] + 5;
_this.canvas_y = pos[1] + 5;
} else {
_this.canvas_x = pos[0];
_this.canvas_y = pos[1];
}
_this.repositionManagePanel();
//reposition all the bling...
for(key in _this.bling) {
if(_this.bling[key]!=null) {
_this.bling[key].setSize();
}
}
}, 100);
}
第三步中,页面上有select标签(饰品),如果有新的div,比如“使用帮助”、“预览”thickbox,新的弹出div是基于z-index很大,实现效果,但是在ie会出现问题。因为select不会藏在z-index高于他的div下面,所以实现方案:
var useScrewedZOderHack = false;
if(BrowserDetect.browser == "Explorer") {
useScrewedZOderHack = true;
}
function doZOrderHack() {
if(!useScrewedZOderHack) {
return;
}
hHiddenFormElements = [];
var selects = document.getElementsByTagName("select");
for(var i=0;i<selects.length;i++) {
var sel = selects[i];
if(sel.style.display != 'none') {
hHiddenFormElements.push(sel);
sel.style.display = 'none';
}
}
}
function rollbackZOrderHack() {
if(!useScrewedZOderHack) {
return;
}
for(var i=0;i<hHiddenFormElements.length;i++) {
var sel = hHiddenFormElements[i];
sel.style.display = '';
}
}
BrowserDetect.js:http://www.quirksmode.org/js/detect.html
2.透明背景png图片在ff下面正常,ie下面不正常的问题
ff能正确显示带Alpha通道的PNG图片. 后来才发现其实IE也可以做到.
IE5.5的滤镜 progid:DXImageTransform.Microsoft.AlphaImageLoader(src=图片地址, sizingmethod=scale) 可以用来读取透明的PNG图象.
var useAlphaHack = false;
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
useAlphaHack = true;
}
3.属性overflow的问题
for some reason the border width gets included in the offset when overflow=hidden
overflow 标签
参考语法:
overflow : visible | auto | hidden | scroll
参数:
visible : 不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
auto : 此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
hidden : 不显示超过对象尺寸的内容
scroll : 总是显示滚动条
var overflowHack = true;
/*
if((BrowserDetect.browser == "Explorer")&&(BrowserDetect.version < 7.0)&&(BrowserDetect.version >= 5.5)) {
overflowHack = false;
}
*/
recalibrateCanvas: function() {
var _this = this;
window.setTimeout( function() {
//var pos = Position.cumulativeOffset(_this.canvas);
var pos = Position.cumulativeOffset(_this.sb.editorPane);
if(overflowHack) {
_this.canvas_x = pos[0] + 5;
_this.canvas_y = pos[1] + 5;
} else {
_this.canvas_x = pos[0];
_this.canvas_y = pos[1];
}
_this.repositionManagePanel();
//reposition all the bling...
for(key in _this.bling) {
if(_this.bling[key]!=null) {
_this.bling[key].setSize();
}
}
}, 100);
}