/*
* 获取el被缩放的倍数
*/
getZoomLeve : function(el) {
// 标示缩放的css属性
var zoomPer, undefinedPer = 'none';
if(S.UA['firefox']) {
zoomPer = '-moz-transform';
}
else if(S.UA['ie']) {
if(S.UA['ie'] == 9) {
zoomPer = '-ms-transform';
} else {
zoomPer = 'zoom';
undefinedPer = 'normal';
}
}
else {
zoomPer = '-webkit-transform';
}
var ret = 1;
// 先计算元素在Iframe内部被缩放的大小
while(el.ownerDocument != document) {
ret *= getZoom(el);
var $ifrs = $('iframe'),
curWin = el.ownerWindow,
ifr;
S.each($ifrs, function(item) {
try{
if(item.contentWindow == curWin) {
ifr = item;
return false;
}
}catch(e) {
// 捕获跨域访问的错误
}
});
if(ifr) {
el = ifr;
} else {
break;
}
}
ret *= getZoom(el);
function getZoom(htmlEl) {
var ret = 1;
// 这里的add将el的缩放也计算在内
S.each($(htmlEl).parents().add($(htmlEl)),function(el) {
if($(el).css(zoomPer) && $(el).css(zoomPer)!=undefinedPer) {
if(S.UA['ie'] && S.UA['ie']<9) {
ret *= el.style.zoom;
} else {
var temp = $(el).css(zoomPer),
start = temp.indexOf('(') + 1,
end = temp.indexOf(',');
ret *= temp.substring(start, end);
}
}
});
return ret;
}
return ret;
}
代码中的S是KISSY的缩写。