Projet

Général

Profil

Paste
Télécharger (1,55 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / themes / adaptivetheme / at_core / scripts / scalefix.js @ 74f6bef0

1
/*! A fix for the iOS orientationchange zoom bug.
2
 Script by @scottjehl, rebound by @wilto.
3
 MIT / GPLv2 License.
4
*/
5
(function(w){
6

    
7
        // This fix addresses an iOS bug, so return early if the UA claims it's something else.
8
        var ua = navigator.userAgent;
9
        if( !( /iPhone|iPad|iPod/.test( navigator.platform ) && /OS [1-5]_[0-9_]* like Mac OS X/i.test(ua) && ua.indexOf( "AppleWebKit" ) > -1 ) ){
10
                return;
11
        }
12

    
13
    var doc = w.document;
14

    
15
    if( !doc.querySelector ){ return; }
16

    
17
    var meta = doc.querySelector( "meta[name=viewport]" ),
18
        initialContent = meta && meta.getAttribute( "content" ),
19
        disabledZoom = initialContent + ",maximum-scale=1",
20
        enabledZoom = initialContent + ",maximum-scale=10",
21
        enabled = true,
22
                x, y, z, aig;
23

    
24
    if( !meta ){ return; }
25

    
26
    function restoreZoom(){
27
        meta.setAttribute( "content", enabledZoom );
28
        enabled = true;
29
    }
30

    
31
    function disableZoom(){
32
        meta.setAttribute( "content", disabledZoom );
33
        enabled = false;
34
    }
35

    
36
    function checkTilt( e ){
37
                aig = e.accelerationIncludingGravity;
38
                x = Math.abs( aig.x );
39
                y = Math.abs( aig.y );
40
                z = Math.abs( aig.z );
41

    
42
                // If portrait orientation and in one of the danger zones
43
        if( (!w.orientation || w.orientation === 180) && ( x > 7 || ( ( z > 6 && y < 8 || z < 8 && y > 6 ) && x > 5 ) ) ){
44
                        if( enabled ){
45
                                disableZoom();
46
                        }
47
        }
48
                else if( !enabled ){
49
                        restoreZoom();
50
        }
51
    }
52

    
53
        w.addEventListener( "orientationchange", restoreZoom, false );
54
        w.addEventListener( "devicemotion", checkTilt, false );
55

    
56
})( this );