Newer
Older
KaiFengAxure / 开封原型APP+微信公众号 / resources / scripts / axure / ie.js
@zhangdeliang zhangdeliang on 28 May 14 KB 1
  1.  
  2. //// ******* Internet Explorer MANAGER ******** //
  3. ////this is to handle all the stupid IE Stuff
  4. //$axure.internal(function($ax) {
  5. // if(!IE_10_AND_BELOW) return;
  6.  
  7. // var _ieColorManager = {};
  8. // if(Number(BROWSER_VERSION) < 9) $ax.ieColorManager = _ieColorManager;
  9.  
  10. // var _applyIEFixedPosition = function() {
  11. // if(Number(BROWSER_VERSION) >= 7) return;
  12.  
  13. // $axure(function(diagramObject) { return diagramObject.fixedVertical; }).$()
  14. // .appendTo($('body'))
  15. // .css('position', 'absolute').css('margin-left', 0 + 'px').css('margin-top', 0 + 'px');
  16.  
  17. // var handleScroll = function() {
  18. // $axure(function(diagramObject) { return diagramObject.fixedVertical; })
  19. // .each(function(diagramObject, elementId) {
  20. // var win = $(window);
  21. // var windowWidth = win.width();
  22. // var windowHeight = win.height();
  23. // var windowScrollLeft = win.scrollLeft();
  24. // var windowScrollTop = win.scrollTop();
  25.  
  26. // var newLeft = 0;
  27. // var newTop = 0;
  28. // var elementQuery = $('#' + elementId);
  29. // var elementAxQuery = $ax('#' + elementId);
  30. // var width = elementAxQuery.width();
  31. // var height = elementAxQuery.height();
  32.  
  33. // var horz = diagramObject.fixedHorizontal;
  34. // if(horz == 'left') {
  35. // newLeft = windowScrollLeft + diagramObject.fixedMarginHorizontal;
  36. // } else if(horz == 'center') {
  37. // newLeft = windowScrollLeft + ((windowWidth - width) / 2) + diagramObject.fixedMarginHorizontal;
  38. // } else if(horz == 'right') {
  39. // newLeft = windowScrollLeft + windowWidth - width - diagramObject.fixedMarginHorizontal;
  40. // }
  41.  
  42. // var vert = diagramObject.fixedVertical;
  43. // if(vert == 'top') {
  44. // newTop = windowScrollTop + diagramObject.fixedMarginVertical;
  45. // } else if(vert == 'middle') {
  46. // newTop = windowScrollTop + ((windowHeight - height) / 2) + diagramObject.fixedMarginVertical;
  47. // } else if(vert == 'bottom') {
  48. // newTop = windowScrollTop + windowHeight - height - diagramObject.fixedMarginVertical;
  49. // }
  50. // elementQuery.css('top', newTop + 'px').css('left', newLeft + 'px');
  51. // });
  52. // };
  53.  
  54. // $(window).scroll(handleScroll);
  55. // $axure.resize(handleScroll);
  56. // handleScroll();
  57. // };
  58.  
  59. // var _applyBackground = function() {
  60. // if(Number(BROWSER_VERSION) >= 9) return;
  61.  
  62. // var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId);
  63. // var argb = _getArgb($ax.pageData.page, styleChain);
  64. // var hexColor = _getHexColor(argb, false);
  65. // if(hexColor) $('body').css('background-color', hexColor);
  66.  
  67. // _applyBackgroundToQuery($ax('*'));
  68. // };
  69.  
  70. // var _applyBackgroundToQuery = function(query) {
  71. // if(Number(BROWSER_VERSION) >= 9) return;
  72.  
  73. // var styleChain = $ax.adaptive.getAdaptiveIdChain($ax.adaptive.currentViewId);
  74. // query.each(function(obj, elementId) {
  75. // if ($ax.public.fn.IsDynamicPanel(obj.type)) {
  76. // var stateCount = obj.diagrams.length;
  77. // for(var j = 0; j < stateCount; j++) {
  78. // var stateId = $ax.repeater.applySuffixToElementId(elementId, '_state' + j);
  79. // var argb = _getArgb(obj.diagrams[j], styleChain);
  80. // var hexColor = _getHexColor(argb, true);
  81. // if(hexColor) $jobj(stateId).css('background-color', hexColor);
  82. // }
  83. // } else if ($ax.public.fn.IsRepeater(obj.type)) {
  84.  
  85. // }
  86. // });
  87. // };
  88. // _ieColorManager.applyBackground = _applyBackgroundToQuery;
  89.  
  90. // var _getArgb = function(diagram, styleChain) {
  91. // var argb = undefined;
  92. // for(var i = 0; i < styleChain.length && !argb; i++) {
  93. // var style = diagram.adaptiveStyles[styleChain[i]];
  94. // argb = style.fill && style.fill.color;
  95. // }
  96. // if(!argb) argb = diagram.style.fill.color;
  97. // return argb;
  98. // };
  99.  
  100. // var gMult = 256;
  101. // var rMult = gMult * 256;
  102. // var aMult = rMult * 256;
  103.  
  104. // var _getHexColor = function(argb, allowWhite) {
  105. // var a = Math.floor(argb / aMult);
  106. // argb -= a * aMult;
  107.  
  108. // var r = Math.floor(argb / rMult);
  109. // argb -= r * rMult;
  110.  
  111. // var g = Math.floor(argb / gMult);
  112. // var b = argb - g * gMult;
  113.  
  114. // return _getColorFromArgb(a, r, g, b, allowWhite);
  115. // };
  116.  
  117. // var _getColorFromArgb = function(a, r, g, b, allowWhite) {
  118. // if(Number(BROWSER_VERSION) >= 9) return undefined;
  119.  
  120. // //convert the color with alpha to a color with no alpha (assuming white background)
  121. // r = Math.min((r * a) / 255 + 255 - a, 255);
  122. // g = Math.min((g * a) / 255 + 255 - a, 255);
  123. // b = Math.min((b * a) / 255 + 255 - a, 255);
  124.  
  125. // if(a == 0) return undefined;
  126. // if(!allowWhite && (r == 255 && g == 255 && b == 255)) return undefined;
  127.  
  128. // var color = '#';
  129. // color += Math.floor(r / 16).toString(16);
  130. // color += Math.floor(r % 16).toString(16);
  131. // color += Math.floor(g / 16).toString(16);
  132. // color += Math.floor(g % 16).toString(16);
  133. // color += Math.floor(b / 16).toString(16);
  134. // color += Math.floor(b % 16).toString(16);
  135. // return color;
  136. // };
  137. // _ieColorManager.getColorFromArgb = _getColorFromArgb;
  138.  
  139. // var getIEOffset = function(transform, rect) {
  140. // var translatedVertexes = [
  141. // $axure.utils.Vector2D(0, 0), //we dont translate, so the orgin is fixed
  142. // transform.mul($axure.utils.Vector2D(0, rect.height)),
  143. // transform.mul($axure.utils.Vector2D(rect.width, 0)),
  144. // transform.mul($axure.utils.Vector2D(rect.width, rect.height))];
  145.  
  146. // var minX = 0, minY = 0, maxX = 0, maxY = 0;
  147. // $.each(translatedVertexes, function(index, p) {
  148. // minX = Math.min(minX, p.x);
  149. // minY = Math.min(minY, p.y);
  150. // maxX = Math.max(maxX, p.x);
  151. // maxY = Math.max(maxY, p.y);
  152. // });
  153.  
  154. // return $axure.utils.Vector2D(
  155. // (maxX - minX - rect.width) / 2,
  156. // (maxY - minY - rect.height) / 2);
  157. // };
  158.  
  159. // var _filterFromTransform = function(transform) {
  160. // return "progid:DXImageTransform.Microsoft.Matrix(M11=" + transform.m11 +
  161. // ", M12=" + transform.m12 + ", M21=" + transform.m21 +
  162. // ", M22=" + transform.m22 + ", SizingMethod='auto expand')";
  163. // };
  164.  
  165. // var _applyIERotation = function() {
  166. // if(Number(BROWSER_VERSION) >= 9) return;
  167.  
  168. // $axure(function(diagramObject) {
  169. // return ((diagramObject.style.rotation && Math.abs(diagramObject.style.rotation) > 0.1)
  170. // || (diagramObject.style.textRotation && Math.abs(diagramObject.style.textRotation) > 0.1))
  171. // && !diagramObject.isContained;
  172. // }).each(function(diagramObject, elementId) {
  173. // var rotation = diagramObject.style.rotation || 0;
  174. // var $element = $('#' + elementId);
  175. // var axElement = $ax('#' + elementId);
  176. // var width = axElement.width();
  177. // var height = axElement.height();
  178. // var originX = width / 2;
  179. // var originY = height / 2;
  180.  
  181. // var shapeIeOffset;
  182. // $element.children().each(function() {
  183. // var $child = $(this);
  184. // var axChild = $ax('#' + $child.attr('id'));
  185. // var childWidth = axChild.width();
  186. // var childHeight = axChild.height() + $child.position().top;
  187. // var centerX = $child.position().left + (childWidth / 2);
  188. // var centerY = $child.position().top + (childHeight / 2);
  189. // var deltaX = centerX - originX;
  190. // var deltaY = centerY - originY;
  191.  
  192. // var effectiveRotation = rotation;
  193. // var textObject = $ax.getObjectFromElementId($child.attr('id'));
  194. // if(textObject) {
  195. // if(textObject.style.textRotation) effectiveRotation = textObject.style.textRotation;
  196. // else return;
  197. // }
  198.  
  199. // var transform = $ax.utils.Matrix2D.identity().rotate(effectiveRotation);
  200. // var filter = _filterFromTransform(transform);
  201.  
  202. // $child.css('filter', filter)
  203. // .width(childWidth + 1)
  204. // .height(childHeight + 1);
  205.  
  206. // var p = transform.mul($ax.utils.Vector2D(deltaX, deltaY));
  207. // var ieOffset = getIEOffset(transform, { width: childWidth, height: childHeight });
  208. // if(!textObject) {
  209. // shapeIeOffset = ieOffset;
  210. // } else {
  211. // // This is a close approximation, but not exact
  212. // if(diagramObject.style.verticalAlignment != 'top') ieOffset.y -= shapeIeOffset.y + Math.abs(shapeIeOffset.x);
  213. // }
  214.  
  215. // $child.css("margin-left", -ieOffset.x - deltaX + p.x).css("margin-top", -ieOffset.y - deltaY + p.y);
  216. // });
  217. // });
  218. // };
  219.  
  220. // var _fixIEStretchBackground = function() {
  221. // if(Number(BROWSER_VERSION) >= 9) return;
  222. // var pageStyle = $ax.adaptive.getPageStyle();
  223. // if(!pageStyle.imageRepeat || pageStyle.imageRepeat == 'auto') return;
  224.  
  225. // $('body').css('background-image', 'none');
  226. // var viewId = $ax.adaptive.currentViewId;
  227. // var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo && $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo;
  228. // if(imageInfo && imageInfo.path) {
  229. // if($('#bg_img').length == 0) $('body').append('<img id="bg_img"/>');
  230. // $('#bg_img').attr('src', imageInfo.path).css('position', 'fixed').css('z-index', '-10000');
  231. // _resizeIEBackground();
  232. // } else $('#bg_img').remove();
  233. // };
  234.  
  235. // var _resizeIEBackground = function() {
  236. // if(Number(BROWSER_VERSION) >= 9) return;
  237. // //var page = $ax.pageData.page;
  238. // var viewId = $ax.adaptive.currentViewId;
  239. // var pageStyle = $ax.adaptive.getPageStyle();
  240. // if(!$ax.pageData.defaultBackgroundImageInfo && !$ax.pageData.viewIdToBackgroundImageInfo) return;
  241. // var imageInfo = viewId ? $ax.pageData.viewIdToBackgroundImageInfo[viewId] : $ax.pageData.defaultBackgroundImageInfo;
  242. // if(!imageInfo) return;
  243. // var imageWidth = imageInfo.width;
  244. // var imageHeight = imageInfo.height;
  245. // var windowWidth = $(window).width();
  246. // var windowHeight = $(window).height();
  247. // var isCover = pageStyle.imageRepeat == 'cover';
  248.  
  249. // var wRatio = windowWidth / imageWidth;
  250. // var hRatio = windowHeight / imageHeight;
  251. // var ratio = wRatio;
  252. // if(isCover) {
  253. // if(hRatio > wRatio) ratio = hRatio;
  254. // } else {
  255. // if(hRatio < wRatio) ratio = hRatio;
  256. // }
  257. // var width = imageWidth * ratio;
  258. // var height = imageHeight * ratio;
  259.  
  260. // var left = '0px';
  261. // if((isCover && width > windowWidth) || (!isCover && width < windowWidth)) {
  262. // if(pageStyle.imageHorizontalAlignment == 'center') {
  263. // left = ((windowWidth - width) / 2) + 'px';
  264. // } else if(pageStyle.imageHorizontalAlignment == 'far') {
  265. // left = (windowWidth - width) + 'px';
  266. // }
  267. // }
  268.  
  269. // var top = '0px';
  270. // if((isCover && height > windowHeight) || (!isCover && height < windowHeight)) {
  271. // if(pageStyle.imageVerticalAlignment == 'center') {
  272. // top = ((windowHeight - height) / 2) + 'px';
  273. // } else if(pageStyle.imageVerticalAlignment == 'far') {
  274. // top = (windowHeight - height) + 'px';
  275. // }
  276. // }
  277.  
  278. // $('#bg_img').css('top', top).css('left', left).css('width', width).css('height', height);
  279. // };
  280.  
  281. // var _fixAllPngs = function() {
  282. // if(!(/MSIE ((5\.5)|6)/.test(window.navigator.userAgent) && window.navigator.platform == "Win32")) return;
  283.  
  284. // $('img[src$=".png"]').each(function() {
  285. // if(!this.complete) {
  286. // this.onload = function() { $axure.utils.fixPng(this); };
  287. // } else {
  288. // $axure.utils.fixPng(this);
  289. // }
  290. // });
  291. // };
  292.  
  293. // var _fixInputSize = function() {
  294. // if(Number(BROWSER_VERSION) >= 8 || window.navigator.userAgent.indexOf("Trident/4.0") > -1) return;
  295. // var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]');
  296. // inputs.each(function() {
  297. // var $input = $(this);
  298. // var axInput = $ax('#' + $input.attr('id'));
  299. // $input.css('height', (axInput.height() - 4 + 'px')).css('width', (axInput.width() - 2 + 'px'));
  300. // });
  301.  
  302. // var textAreas = $($ax.constants.TEXT_AREA_TYPE);
  303. // textAreas.each(function() {
  304. // var $textArea = $(this);
  305. // var axText = $ax('#' + $textArea.attr('id'));
  306. // $textArea.css('height', (axText.height() - 6 + 'px')).css('width', (axText.width() - 6 + 'px'));
  307. // });
  308. // };
  309.  
  310. // var _fixInputBackground = function() {
  311. // var inputs = $('input').not(':input[type=button], :input[type=submit], :input[type=radio], :input[type=checkbox]');
  312. // inputs = inputs.add($($ax.constants.TEXT_AREA_TYPE));
  313. // inputs.each(function() {
  314. // var $input = $(this);
  315. // if($input.css('background-color') == 'transparent') {
  316. // $input.css('background-image', 'url(../../transparent.gif)');
  317. // } else {
  318. // $input.css('background-image', '');
  319. // }
  320. // });
  321. // };
  322.  
  323. // $(document).ready(function() {
  324. // _fixIEStretchBackground();
  325. // _applyIEFixedPosition();
  326. // $axure.resize(function() {
  327. // _resizeIEBackground();
  328. // });
  329. // $ax.adaptive.bind('viewChanged', function() {
  330. // _fixIEStretchBackground();
  331. // _applyBackground();
  332. // _fixInputBackground();
  333. // });
  334.  
  335.  
  336. // _fixAllPngs();
  337. // _applyIERotation();
  338. // _applyBackground();
  339. // _fixInputSize();
  340. // _fixInputBackground();
  341. // });
  342.  
  343.  
  344. //});