Changeset 96755 in spip-zone


Ignore:
Timestamp:
Apr 21, 2016, 9:40:45 PM (3 years ago)
Author:
kent1@…
Message:

Dernière version de leaflet.fullscreen

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gis/trunk/lib/leaflet/plugins/Control.FullScreen.js

    r91571 r96755  
    1 (function() {
     1(function () {
    22
    33L.Control.FullScreen = L.Control.extend({
     
    55                position: 'topleft',
    66                title: 'Full Screen',
     7                titleCancel: 'Exit Full Screen',
    78                forceSeparateButton: false,
    8                 forcePseudoFullscreen: false
     9                forcePseudoFullscreen: false,
     10                fullscreenElement: false
    911        },
    1012       
     
    2628                this._createButton(this.options.title, className, content, container, this.toggleFullScreen, this);
    2729
     30                this._map.on('enterFullscreen exitFullscreen', this._toggleTitle, this);
     31
    2832                return container;
    2933        },
    3034       
    31         _createButton: function (title, className, content,container, fn, context) {
    32                 var link = L.DomUtil.create('a', className, container);
    33                 link.href = '#';
    34                 link.title = title;
    35                 link.innerHTML = content;
     35        _createButton: function (title, className, content, container, fn, context) {
     36                this.link = L.DomUtil.create('a', className, container);
     37                this.link.href = '#';
     38                this.link.title = title;
     39                this.link.innerHTML = content;
    3640
    3741                L.DomEvent
    38                         .addListener(link, 'click', L.DomEvent.stopPropagation)
    39                         .addListener(link, 'click', L.DomEvent.preventDefault)
    40                         .addListener(link, 'click', fn, context);
     42                        .addListener(this.link, 'click', L.DomEvent.stopPropagation)
     43                        .addListener(this.link, 'click', L.DomEvent.preventDefault)
     44                        .addListener(this.link, 'click', fn, context);
    4145               
    4246                L.DomEvent
     
    5054                        .addListener(document, fullScreenApi.fullScreenEventName, this._handleEscKey, context);
    5155
    52                 return link;
     56                return this.link;
    5357        },
    5458       
     
    5862                if (map._isFullscreen) {
    5963                        if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) {
    60                                 fullScreenApi.cancelFullScreen(map._container);
     64                                fullScreenApi.cancelFullScreen(this.options.fullscreenElement ? this.options.fullscreenElement : map._container);
    6165                        } else {
    6266                                L.DomUtil.removeClass(map._container, 'leaflet-pseudo-fullscreen');
     
    6973                else {
    7074                        if (fullScreenApi.supportsFullScreen && !this.options.forcePseudoFullscreen) {
    71                                 fullScreenApi.requestFullScreen(map._container);
     75                                fullScreenApi.requestFullScreen(this.options.fullscreenElement ? this.options.fullscreenElement : map._container);
    7276                        } else {
    7377                                L.DomUtil.addClass(map._container, 'leaflet-pseudo-fullscreen');
     
    7781                        map._isFullscreen = true;
    7882                }
     83        },
     84       
     85        _toggleTitle: function () {
     86                this.link.title = this._map._isFullscreen ? this.options.title : this.options.titleCancel;
    7987        },
    8088       
     
    112120                fullScreenApi = {
    113121                        supportsFullScreen: false,
    114                         isFullScreen: function() { return false; },
    115                         requestFullScreen: function() {},
    116                         cancelFullScreen: function() {},
     122                        isFullScreen: function () { return false; },
     123                        requestFullScreen: function () {},
     124                        cancelFullScreen: function () {},
    117125                        fullScreenEventName: '',
    118126                        prefix: ''
     
    125133        } else {
    126134                // check for fullscreen support by vendor prefix
    127                 for (var i = 0, il = browserPrefixes.length; i < il; i++ ) {
     135                for (var i = 0, il = browserPrefixes.length; i < il; i++) {
    128136                        fullScreenApi.prefix = browserPrefixes[i];
    129                         if (typeof document[fullScreenApi.prefix + 'CancelFullScreen' ] !== 'undefined' ) {
     137                        if (typeof document[fullScreenApi.prefix + 'CancelFullScreen'] !== 'undefined') {
    130138                                fullScreenApi.supportsFullScreen = true;
    131139                                break;
     
    137145        if (fullScreenApi.supportsFullScreen) {
    138146                fullScreenApi.fullScreenEventName = fullScreenApi.prefix + 'fullscreenchange';
    139                 fullScreenApi.isFullScreen = function() {
     147                fullScreenApi.isFullScreen = function () {
    140148                        switch (this.prefix) { 
    141149                                case '':
     
    147155                        }
    148156                };
    149                 fullScreenApi.requestFullScreen = function(el) {
     157                fullScreenApi.requestFullScreen = function (el) {
    150158                        return (this.prefix === '') ? el.requestFullscreen() : el[this.prefix + 'RequestFullScreen']();
    151159                };
    152                 fullScreenApi.cancelFullScreen = function(el) {
     160                fullScreenApi.cancelFullScreen = function () {
    153161                        return (this.prefix === '') ? document.exitFullscreen() : document[this.prefix + 'CancelFullScreen']();
    154162                };
     
    157165        // jQuery plugin
    158166        if (typeof jQuery !== 'undefined') {
    159                 jQuery.fn.requestFullScreen = function() {
    160                         return this.each(function() {
     167                jQuery.fn.requestFullScreen = function () {
     168                        return this.each(function () {
    161169                                var el = jQuery(this);
    162170                                if (fullScreenApi.supportsFullScreen) {
Note: See TracChangeset for help on using the changeset viewer.