mirror of
https://github.com/Hopiu/jquery-mobile.git
synced 2026-03-16 22:10:25 +00:00
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
|
|
//>>description: Fixes the iOS orientation change bug using a jQM version of this technique https://github.com/scottjehl/iOS-Orientationchange-Fix
|
|
//>>label: iOS orientation change bugfix
|
|
|
|
define( [ "jquery", "./jquery.mobile.core", "./jquery.mobile.zoom" ], function( $ ) {
|
|
//>>excludeEnd("jqmBuildExclude");
|
|
( function( $, window ) {
|
|
|
|
// This fix addresses an iOS bug, so return early if the UA claims it's something else.
|
|
if( !(/iPhone|iPad|iPod/.test( navigator.platform ) && navigator.userAgent.indexOf( "AppleWebKit" ) > -1 ) ){
|
|
return;
|
|
}
|
|
|
|
var zoom = $.mobile.zoom,
|
|
evt, x, y, z, aig;
|
|
|
|
function checkTilt( e ){
|
|
evt = e.originalEvent;
|
|
aig = evt.accelerationIncludingGravity;
|
|
|
|
x = Math.abs( aig.x );
|
|
y = Math.abs( aig.y );
|
|
z = Math.abs( aig.z );
|
|
|
|
// If portrait orientation and in one of the danger zones
|
|
if( !window.orientation && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){
|
|
if( zoom.enabled ){
|
|
zoom.disable();
|
|
}
|
|
}
|
|
else if( !zoom.enabled ){
|
|
zoom.enable();
|
|
}
|
|
}
|
|
|
|
$( window )
|
|
.bind( "orientationchange.iosorientationfix", zoom.enable )
|
|
.bind( "devicemotion.iosorientationfix", checkTilt );
|
|
|
|
}( jQuery, this ));
|
|
//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);
|
|
});
|
|
//>>excludeEnd("jqmBuildExclude");
|