12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- $axure.internal(function ($ax) {
- if ((IOS && SAFARI) || SHARE_APP) {
- var outerHtml = document.documentElement;
- outerHtml.id = 'ios-safari';
- var html = document.createElement('html');
- html.id = 'ios-safari-html';
- outerHtml.appendChild(html);
- var body = document.body;
- html.appendChild(body);
- Object.defineProperty(document, 'body', {
- get: function () {
- return body;
- }
- });
- var fixedBody = document.createElement('body');
- fixedBody.id = 'ios-safari-fixed';
- outerHtml.appendChild(fixedBody);
- var fixedBase = document.createElement('div');
- fixedBase.id = 'base-fixed';
- fixedBody.appendChild(fixedBase);
- var isDevice = false;
- var deviceWidth = 0;
- var updateHtmlWidth = function (panelWidthOffset, scale, height, scaleN) {
- var iosSafHtml = $('#ios-safari-html');
- iosSafHtml.css('overflow', '');
- iosSafHtml.css('overflow-x', '');
- iosSafHtml.css('height', '');
- if (isDevice) {
- iosSafHtml.width(deviceWidth / scaleN);
- iosSafHtml.css('overflow-x', 'hidden');
- } else {
- var isLandscape = window.orientation != 0 && window.orientation != 180;
- var mobileWidth = isLandscape ? window.screen.height : window.screen.width
- iosSafHtml.width((mobileWidth - panelWidthOffset) / scaleN);
- }
- if (scale == 1) {
- iosSafHtml.css('overflow-x', 'hidden');
- iosSafHtml.css('height', (height / scaleN) + 'px');
- } else if (scale == 2) iosSafHtml.css('overflow', 'hidden');
- };
- updateHtmlWidth(0);
- $axure('*').each(function (obj, element) {
- if (obj && obj.fixedVertical && obj.fixedKeepInFront) {
- var parent = $axure('#' + element).getParents(false, ['item', 'state'])[0];
- if (!parent) {
- $('#base-fixed').append($('#' + element));
- }
- }
- });
- $axure.messageCenter.addMessageListener(function (message, data) {
- if (message == "setContentScale") {
- updateHtmlWidth(data.panelWidthOffset, data.scale, data.viewportHeight, data.scaleN);
- } else if (message == "setDeviceMode") {
- isDevice = data.device && !data.scaleToWidth;
- if (isDevice) deviceWidth = data.width;
- updateHtmlWidth(0);
- }
- });
- $('#ios-safari-html').scroll(function () {
- $axure.updateWindowInfo();
- });
-
- var scrollStartY;
- var maxScrollY
- var touchStart;
- $axure('*').each(function (obj, element) {
- if (obj && obj.scrollbars && obj.scrollbars.toLowerCase() != 'none') {
- if (obj.scrollbars == 'horizontalAsNeeded') return;
- $('#' + element).on('touchstart', function (e) {
- touchStart = e.pageY;
- var stateId = $ax.visibility.GetPanelState($('#' + element).attr('id'));
- scrollStartY = $('#' + stateId).scrollTop();
- maxScrollY = $('#' + stateId)[0].scrollHeight - $('#' + stateId).height();
- });
- $('#' + element).on('touchmove', function (e) {
- if (maxScrollY <= 0) return false;
- if (scrollStartY == 0 && e.pageY > touchStart) e.preventDefault();
- if (scrollStartY == maxScrollY && e.pageY < touchStart) e.preventDefault();
- });
- }
- });
- }
- });
|