Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何为映像延迟加载提供默认加载程序_Javascript_Jquery_Html_Css_Angularjs - Fatal编程技术网

Javascript 如何为映像延迟加载提供默认加载程序

Javascript 如何为映像延迟加载提供默认加载程序,javascript,jquery,html,css,angularjs,Javascript,Jquery,Html,Css,Angularjs,我使用下面的库进行延迟加载,代码如下: angular.module('me-lazyload', []) .directive('lazySrc', ['$window', '$document', function($window, $document){ var doc = $document[0], body = doc.body, win = $window, $win = angular.element(win), uid = 0,

我使用下面的库进行延迟加载,代码如下:

          angular.module('me-lazyload', [])
.directive('lazySrc', ['$window', '$document', function($window, $document){
var doc = $document[0],
    body = doc.body,
    win = $window,
    $win = angular.element(win),
    uid = 0,
    elements = {};

function getUid(el){
    var __uid = el.data("__uid");
    if (! __uid) {
        el.data("__uid", (__uid = '' + ++uid));
    }
    return __uid;
}

function getWindowOffset(){
    var t,
        pageXOffset = (typeof win.pageXOffset == 'number') ? win.pageXOffset : (((t = doc.documentElement) || (t = body.parentNode)) && typeof t.scrollLeft == 'number' ? t : body).scrollLeft,
        pageYOffset = (typeof win.pageYOffset == 'number') ? win.pageYOffset : (((t = doc.documentElement) || (t = body.parentNode)) && typeof t.scrollTop == 'number' ? t : body).scrollTop;
    return {
        offsetX: pageXOffset,
        offsetY: pageYOffset
    };
}

function isVisible(iElement){
    var elem = iElement[0],
        elemRect = elem.getBoundingClientRect(),
        windowOffset = getWindowOffset(),
        winOffsetX = windowOffset.offsetX,
        winOffsetY = windowOffset.offsetY,
        elemWidth = elemRect.width || elem.width,
        elemHeight = elemRect.height || elem.height,
        elemOffsetX = elemRect.left + winOffsetX,
        elemOffsetY = elemRect.top + winOffsetY,
        viewWidth = Math.max(doc.documentElement.clientWidth, win.innerWidth || 0),
        viewHeight = Math.max(doc.documentElement.clientHeight, win.innerHeight || 0),
        xVisible,
        yVisible;

    if(elemOffsetY <= winOffsetY){
        if(elemOffsetY + elemHeight >= winOffsetY){
            yVisible = true;
        }
    }else if(elemOffsetY >= winOffsetY){
        if(elemOffsetY <= winOffsetY + viewHeight){
            yVisible = true;
        }
    }

    if(elemOffsetX <= winOffsetX){
        if(elemOffsetX + elemWidth >= winOffsetX){
            xVisible = true;
        }
    }else if(elemOffsetX >= winOffsetX){
        if(elemOffsetX <= winOffsetX + viewWidth){
            xVisible = true;
        }
    }

    return xVisible && yVisible;
};

function checkImage(){
    angular.forEach(elements, function(obj, key) {
        var iElement = obj.iElement,
            $scope = obj.$scope;
        if(isVisible(iElement)){
          iElement.attr('src', $scope.lazySrc);
        }
    });
}

$win.bind('scroll', checkImage);
$win.bind('resize', checkImage);

function onLoad(){
    var $el = angular.element(this),
        uid = getUid($el);

    $el.css('opacity', 1);

    if(elements.hasOwnProperty(uid)){
        delete elements[uid];
    }
}

return {
    restrict: 'A',
    scope: {
        lazySrc: '@',
        animateVisible: '@',
        animateSpeed: '@'
    },
    link: function($scope, iElement){
        iElement.bind('load', onLoad);

        $scope.$watch('lazySrc', function(){
            var speed = "1s";
            if ($scope.animateSpeed != null) {
                speed = $scope.animateSpeed;
            }
            if(isVisible(iElement)){
                if ($scope.animateVisible) {
                    iElement.css({
                        'opacity': 0,
                        '-webkit-transition': 'opacity ' + speed,
                        'transition': 'opacity ' + speed
                    });
                }
                iElement.attr('src', $scope.lazySrc);
            }else{
                var uid = getUid(iElement);
                iElement.css({
                    'opacity': 0,
                    '-webkit-transition': 'opacity ' + speed,
                    'transition': 'opacity ' + speed
                });
                elements[uid] = {
                    iElement: iElement,
                    $scope: $scope
                };
            }
        });

        $scope.$on('$destroy', function(){
            iElement.unbind('load');
            var uid = getUid(iElement);
            if(elements.hasOwnProperty(uid)){
                delete elements[uid];
            }
        });
    }
};
angular.module('me-lazyload',[]))
.directive('lazySrc',['$window','$document',函数($window,$document){
var doc=$document[0],
body=doc.body,
win=$window,
$win=角度元素(win),
uid=0,
元素={};
函数getUid(el){
var uuu uid=el.data(“uuuu uid”);
如果(!\u uid){
el.data(“uuu-uid”,(uuuu-uid=”+++uid));
}
返回uid;
}
函数getWindowOffset(){
var t,
pageXOffset=(typeof win.pageXOffset='number')?win.pageXOffset:((t=doc.documentElement)| |(t=body.parentNode))&&typeof t.scrollLeft='number'?t:body)。scrollLeft,
pageYOffset=(typeof win.pageYOffset='number')?win.pageYOffset:((t=doc.documentElement)| |(t=body.parentNode))&&typeof t.scrollTop='number'?t:body)。scrollTop;
返回{
offsetX:pageXOffset,
偏移量:pageYOffset
};
}
函数可见(IEElement){
var elem=IELENT[0],
elemRect=elem.getBoundingClientRect(),
windowOffset=getWindowOffset(),
winOffsetX=windowOffset.offsetX,
winOffsetY=windowOffset.offsetY,
elemWidth=元素宽度| |元素宽度,
元素高度=元素高度| |元素高度,
elemOffsetX=elemRect.left+winOffsetX,
elemOffsetY=elemRect.top+winOffsetY,
viewWidth=Math.max(doc.documentElement.clientWidth,win.innerWidth | | 0),
viewHeight=Math.max(doc.documentElement.clientHeight,win.innerHeight | | 0),
十六,,
易看见;
if(elemOffsetY=winOffsetY){
yVisible=真;
}
}else if(elemOffsetY>=winOffsetY){
if(elemOffsetY=winOffsetX){

if(elemOffsetX)是否与此相关?是。有两个错误一个是水平滚动,另一个是默认加载程序您是否尝试过使用ng src=“image src goes here”?而不是正常的src=“”是。我有。它在这里不起作用