整理demo+UI
This commit is contained in:
91
demo/resources/scripts/axure/ios.js
Normal file
91
demo/resources/scripts/axure/ios.js
Normal file
@@ -0,0 +1,91 @@
|
||||
$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();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user