日期:2014-05-17  浏览次数:20593 次

JQuery 获得html元素被缩放的倍数
/*
		 * 获取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的缩写。