Bootstrap 3.0 scrollspy sensible décalages

Je vais essayer d'obtenir Bootstrap est scrollspy fonctionne de manière fiable sur un site responsive sur lequel la barre de navigation en haut de la hauteur change en fonction de la largeur du support/navigateur. Ainsi, au lieu de coder en dur le décalage sur le data-offset attribut je suis de manière dynamique à l'aide de Javascript initialisation comme ceci:

$('body').scrollspy({ offset: 70, target: '#nav' });

Pour l'échelle des mises en page (c'est à dire Bootstrap-lg) il fonctionne très bien mais pour plus étroite dispositions il semble y avoir une "accumulation" effet de l'offset. En d'autres termes, il fonctionne très bien pour la première partie, mais prend alors l'augmentation de pixels pour activer les suivantes (par exemple 90px pour la prochaine, 110px pour la 3ème, etc.).

J'ai essayé la manipulation de la scrollspy objet directement comme indiqué dans cette réponse:
Comment puis-je régler l'offset pour ScrollSpy dans le Bootstrap? mais en vain.

Quelqu'un peut-il recommander une manière canonique de la mise en œuvre de scrollspy dans un site responsive où le décalage varie en fonction de la largeur du support?

Informations Supplémentaires:

J'ai juste analysé les scrollspy objet dans les deux scénarios, et il s'avère que la liste des décalages est différent lorsqu'il est initialisé par data- attributs uniquement vs via JS. Il semble que lorsque je l'initialiser via JS, les décalages tableau est renseigné avant de certains de BS ajustements adaptés arriver et, par conséquent, les hauteurs sont différentes. Comment puis-je déclencher scrollspy d'initialisation du après toutes les choses sensibles a courir? Est-il un crochet/rappel après BS se fait en ajustant la mise en page? Est JS même ou est toutes les choses sensibles manipulés par le CSS?

Fait intéressant, si je laisse scrollspy s'initialiser à partir de la data- attributs, il fonctionne très bien. Seulement quand je le fais à partir de Javascript puis-je obtenir le "accumuler" effet décalé. En quelque sorte, l'initialisation de scrollspy JS comme dans l'extrait ci-dessus n'est pas équivalente à la laisser faire à partir de la data- attributs. N'ont pas compris pourquoi encore.
La réactivité est gérée par CSS (sauf si vous avez respond.js dans IE8 pour la compatibilité). Êtes-vous d'emballer votre code js à l'intérieur du document prêt gestionnaire?
Oui, je suis d'appeler $('body').scrollspy({...}) à l'intérieur de $(document).ready(function() {. Mais comme je l'ai mentionné ci-dessus, cette façon de faire crée un ensemble différent de décalages par rapport à la laisser s'initialiser par lui-même avec le data- attributs.
peut-être que le $(document).ready faire la différence ici. Le plugin $(window).on('load' pour définir les attributs data -. Voir aussi: stackoverflow.com/questions/4395780/...
Je pense que vous avez raison, c'est probablement la clé. Selon ce commentaire, $(document).ready arrive plus tôt (souvent beaucoup plus tôt) que le$(window) charge de l'événement. Il est donc très probable que les hauteurs n'ont pas été entièrement réglé encore. Une option est d'essayer d'accrocher les décalages sur le dernier rappel de la place, mais à ce point, j'ai opté pour une approche complètement différente, en ajustant CSS padding, etc. Merci à vous tous pour votre aide et vos idées.

OriginalL'auteur Ike | 2013-08-14