Вход Регистрация
Файл: src/public/assets/js/retina-1.1.0.js
Строк: 153
<?php
/*!
 * Retina.js v1.1.0
 *
 * Copyright 2013 Imulus, LLC
 * Released under the MIT license
 *
 * Retina.js is an open source script that makes it easy to serve
 * high-resolution images to devices with retina displays.
 */
(function() {

  var 
root = (typeof exports == 'undefined' window exports);

  var 
config = {
    
// Ensure Content-Type is an image before trying to load @2x image
    // https://github.com/imulus/retinajs/pull/45)
    
check_mime_typetrue
  
};



  
root.Retina Retina;

  function 
Retina() {}

  
Retina.configure = function(options) {
    if (
options == nulloptions = {};
    for (var 
prop in optionsconfig[prop] = options[prop];
  };

  
Retina.init = function(context) {
    if (
context == nullcontext root;

    var 
existing_onload context.onload || new Function;

    
context.onload = function() {
      var 
images document.getElementsByTagName("img"), retinaImages = [], iimage;
      for (
0images.lengthi++) {
        
image images[i];
        
retinaImages.push(new RetinaImage(image));
      }
      
existing_onload();
    }
  };

  
Retina.isRetina = function(){
    var 
mediaQuery "(-webkit-min-device-pixel-ratio: 1.5),
                      (min--moz-device-pixel-ratio: 1.5),
                      (-o-min-device-pixel-ratio: 3/2),
                      (min-resolution: 1.5dppx)"
;

    if (
root.devicePixelRatio 1)
      return 
true;

    if (
root.matchMedia && root.matchMedia(mediaQuery).matches)
      return 
true;

    return 
false;
  };


  
root.RetinaImagePath RetinaImagePath;

  function 
RetinaImagePath(pathat_2x_path) {
    
this.path path;
    if (
typeof at_2x_path !== "undefined" && at_2x_path !== null) {
      
this.at_2x_path at_2x_path;
      
this.perform_check false;
    } else {
      
this.at_2x_path path.replace(/.w+$/, function(match) { return "@2x" match; });
      
this.perform_check true;
    }
  }

  
RetinaImagePath.confirmed_paths = [];

  
RetinaImagePath.prototype.is_external = function() {
    return !!(
this.path.match(/^https?:/i) && !this.path.match('//' document.domain) )
  }

  
RetinaImagePath.prototype.check_2x_variant = function(callback) {
    var 
httpthat this;
    if (
this.is_external()) {
      return 
callback(false);
    } else if (!
this.perform_check && typeof this.at_2x_path !== "undefined" && this.at_2x_path !== null) {
      return 
callback(true);
    } else if (
this.at_2x_path in RetinaImagePath.confirmed_paths) {
      return 
callback(true);
    } else {
      
http = new XMLHttpRequest;
      
http.open('HEAD'this.at_2x_path);
      
http.onreadystatechange = function() {
        if (
http.readyState != 4) {
          return 
callback(false);
        }

        if (
http.status >= 200 && http.status <= 399) {
          if (
config.check_mime_type) {
            var 
type http.getResponseHeader('Content-Type');
            if (
type == null || !type.match(/^image/i)) {
              return 
callback(false);
            }
          }

          
RetinaImagePath.confirmed_paths.push(that.at_2x_path);
          return 
callback(true);
        } else {
          return 
callback(false);
        }
      }
      
http.send();
    }
  }



  function 
RetinaImage(el) {
    
this.el el;
    
this.path = new RetinaImagePath(this.el.getAttribute('src'), this.el.getAttribute('data-at2x'));
    var 
that this;
    
this.path.check_2x_variant(function(hasVariant) {
      if (
hasVariantthat.swap();
    });
  }

  
root.RetinaImage RetinaImage;

  
RetinaImage.prototype.swap = function(path) {
    if (
typeof path == 'undefined'path this.path.at_2x_path;

    var 
that this;
    function 
load() {
      if (! 
that.el.complete) {
        
setTimeout(load5);
      } else {
        
that.el.setAttribute('width'that.el.offsetWidth);
        
that.el.setAttribute('height'that.el.offsetHeight);
        
that.el.setAttribute('src'path);
      }
    }
    
load();
  }




  if (
Retina.isRetina()) {
    
Retina.init(root);
  }

})();
?>
Онлайн: 1
Реклама