2017-02-21 2 views

Antwort

3

Sie könnten Element.getBoundingClientRect() verwenden, um zu testen, ob ein Element im Ansichtsfenster sichtbar ist (siehe How to tell if a DOM element is visible in the current viewport?):

Polymer({ 
    ... 
    _onSomeEvent: function() { 
    var targetEl = /* ... */; 
    if (!this._isElementInViewport(targetEl)) { 
     // send notification to user 
    } 
    }, 

    _isElementInViewport: function(el) { 
    const rect = el.getBoundingClientRect(); 
    return (
     rect.top >= 0 && 
     rect.left >= 0 && 
     rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ 
     rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ 
    ); 
    } 
}); 

Basierend auf Ihrem other question, ich nehme an, Sie im Rahmen der <iron-list> sind gefragt. Wenn Sie beispielsweise die Ansichtsfenstersicht eines bestimmten Listenelements bestimmen möchten, können Sie testen, ob der Index des Elements zwischen <iron-list>.firstVisibleIndex und <iron-list>.lastVisibleIndex liegt.

Polymer({ 
    ... 
    _onSomeEvent: function() { 
    var targetEl = /* ... */; 
    if (!this._isElementInViewport(targetEl)) { 
     // send notification to user 
    } 
    }, 

    _isElementInViewport: function(el) { 
    var index = /* get index of el */; 
    return index >= this.$.myIronList.firstVisibleIndex && 
      index <= this.$.myIronList.lastVisibleIndex; 
    } 
}); 
Verwandte Themen