2017-02-10 1 views
0

J'ai ajouté un iframe dans une balise div. teneur en Iframe a tag « sec » avec identifiant spécifique, comme,Récupère les ID des éléments dans la fenêtre d'affichage

<p> 
<sec id='1'>some text</sec> 
<sec id='2'>some other text</sec> 
</p> 

contenu Iframe se propage horizontalement à l'aide largeur de la colonne et l'écart de la colonne. Div est scrollable selon la largeur iframes.

Ce que j'ai besoin de trouver est la première et dernière valeur d'identification de la balise 'sec' qui est visible dans la fenêtre actuellement.

J'ai trouvé à propos de getBoundingClientRect mais pas clair sur la façon dont il peut être utilisé?

Également le souci est qu'il n'augmentera pas la charge de traitement puisque nous devons courir une boucle pour vérifier chaque position d'étiquette?

Quelqu'un peut-il ombrer de la lumière?

+0

'getBoundingClientRect' est par rapport à la fenêtre/fenêtre les éléments sont contenus dans, par exemple, il retourne la position à l'intérieur de l'iframe. Avez-vous besoin de savoir si les éléments sont visibles à l'intérieur de l'iframe? Ou avez-vous besoin de savoir si elles sont visibles à l'intérieur de l'iframe _and_ si l'iframe est visible dans la fenêtre principale? – hashchange

+0

Si les performances sont importantes ou si jQuery fonctionne pour vous, vous pouvez jeter un oeil à [jQuery.isInView] (https://github.com/hashchange/jquery.isinview), un composant que j'ai écrit, qui fait le travail (et le fait très vite) et fonctionne pour les iframes. – hashchange

+0

Je dois trouver tous les identifiants des divs ou tags qui sont visibles dans cette fenêtre. Est-il possible d'avoir le premier et le dernier élément dans la zone visible avec votre plugin? – pravid

Répondre

0

Voici comment vous pouvez obtenir l'identifiant du premier et dernier élément visible à l'intérieur d'un iframe, en utilisant jQuery.isInView:

var $iframe = $(yourIframeSelector), 
    _document = $iframe[0].contentDocument, 

    $elements = $(yourElementSelector, _document), 
    $visible = $elements.inView(_document), 

    firstId = $visible.first().attr("id"), 
    lastId = $visible.last().attr("id"); 
+1

J'ai dû faire quelques changements mais ça marche super, merci! Accepter comme réponse. – pravid