Проблемы с кнопкой (JS+CSS+IMG), не меняется стиль!

147
21 октября 2018, 18:20
(function($) {
  'use strict';
  $.ThreeSixtyFullscreen = function(el, options) {
    var plugin = this,
      $el = el,
      opts = options,
      $button = $('<a href=\'#\'>Fullscreen</a>'),
      isFullscreen = true,
      pfx = ['webkit', 'moz', 'ms', 'o', ''];
    // Attach event to the plugin
    $button.bind('touchstart click', function(event) {
      plugin.onClickHandler.apply(this, event);
    });
    /**
     * Set styles for the plugin interface.
     * @return {Object} this
     */
    plugin.setStyles = function() {
      $button.css({
        'z-index': '12',
        'display': 'block',
        'position': 'absolute',
        'background': 'url(/catalog/view/javascript/jquery/threesixty/images/fs.png) no-repeat',
        'width': '32px',
        'height': '32px',
        'text-indent': '-99999px',
        'right': '10px',
        'bottom': '10px',
        'cursor': 'pointer',
        'background-position': '0px -32px'
      });
      return this;
    };
    plugin.RunPrefixMethod = function(obj, method) {
      var p = 0,
        m, t;
      while (p < pfx.length && !obj[m]) {
        m = method;
        if (pfx[p] === '') {
          m = m.substr(0, 1).toLowerCase() + m.substr(1);
        }
        m = pfx[p] + m;
        t = typeof obj[m];
        if (t !== 'undefined') {
          pfx = [pfx[p]];
          return (t === 'function' ? obj[m]() : obj[m]);
        }
        p++;
      }
    };
    /**
     * Initilize the fullscreen plugin
     * @param  {Object} opt override options
     */
    plugin.init = function() {
      plugin.setStyles();
      $el.prepend($button);
    };
    plugin.onClickHandler = function(e) {
      var elem;
      if (typeof $el.attr('id') !== 'undefined') {
        elem = document.getElementById($el.attr('id'));
      } else if (typeof $el.parent().attr('id') !== 'undefined') {
        elem = document.getElementById($el.parent().attr('id'));
      } else {
        return false;
      }
      plugin.toggleFullscreen(elem);
    };
    plugin.toggleButton = function() {
      if (isFullscreen) {
        $button.css({
          'background-position': '0px 0px'
        });
      } else {
        $button.css({
          'background-position': '0px -32px'
        });
      }
    };
    plugin.toggleFullscreen = function(elem) {
      if (plugin.RunPrefixMethod(document, 'FullScreen') || plugin.RunPrefixMethod(document, 'IsFullScreen')) {
        plugin.RunPrefixMethod(document, 'CancelFullScreen');
      }
      else {
        plugin.RunPrefixMethod(elem, 'RequestFullScreen');
      }
      plugin.toggleButton();
    };
    plugin.init();
  };
}(jQuery));

Есть вот такой скрипт для вывода крутёлки 360 в полный экран, он работает, но есть несколько проблем.

  1. По умолчанию кнопка перехода в полноэкранный режим такая как надо (0 -32), когда заходим в полноэкранный режим кнопка меняется на (0 -0), а вот когда выходим из полноэкранного режима кнопка не возвращается в исходное состояние (0 -32). fs.png - это спрайт 32 ширина и 64 высота. Вроде все должно работать, но не идет.

  2. В мобильном устройстве кнопка на вход в полноэкранный режим при касании меняет картинку, но в полный экран не заходит (точнее заходит, но нужно словить положение), а вот выход из полноэкранного режима работает с пол тыка. Вообще и то и то плохо работало пока я не добавил touchstart. С мышкой в полноэкранный заходит без проблем. Наверное еще что то нужно поменять. Проблема не во всех браузерах (только в Опере и Хроме).

  3. Что можно допилить, чтобы этот скрипт еще и в IE работал?

READ ALSO
Как выбрать пронумерованную строку из JSON [закрыт]

Как выбрать пронумерованную строку из JSON [закрыт]

Есть файл json, в нем содержатся данные, и один массив с массивами, те

168
Как открыть проект на Vue.js в VS2017?

Как открыть проект на Vue.js в VS2017?

Сразу оговорюсь, на Vuejs не программировал, есть небольшой опыт со старым AngularJS, да и тот в Notepad++

177
Добавление в ListBoxItems циклом из массива

Добавление в ListBoxItems циклом из массива

Имеется массив с координатами точек, названием и содержимым для балуна, циклом добавляется в коллекцию и выводятся точки на картуНо встал...

188
Как сделать группировку меток yandex map API

Как сделать группировку меток yandex map API

Наткнулся на этот пост Группировка меток на карте но на практике выкидывает не понятные ошибке http://dtenpokt

174