J'ai le code ci-dessous qui ouvrira une fenêtre modale. Cela fonctionne dans IE 8 mais pas en chrome ou ff. Je suis nouveau dans le monde des fonctionnalités du navigateur croisé.
function ShowModal(WindowID,FramesetID) { window.onscroll = function () { window.top.document.getElementById(WindowID).style.top = window.top.document.body.scrollTop; }; window.top.document.getElementById(WindowID).style.display = "block"; window.top.document.getElementById(WindowID).style.top = document.body.scrollTop; widthv=parseInt(parseInt(screen.width)/1.50); heightv=parseInt(parseInt(screen.height)/1.50); window.top.document.getElementById(FramesetID).style.width=widthv; window.top.document.getElementById(FramesetID).style.height=heightv; }
7 Réponses :
Je recommanderais JQuery comme Chrispanda l'a suggéré. JQuery a un événement de défilement intégré et le reste peut être écrit en quelques lignes pour manipuler le HTML / CSS. P>
Selon le mode de rendu actuel de votre navigateur, vous devrez peut-être utiliser Il y a de bon fond sur ce problème dans Article Evolt de Peter-Paul Koch (de Quirksmode .Org Fame), mais c'est à partir de 2002 et est un peu daté de maintenant. P>
Comme d'autres ici suggèrent, le moyen le plus simple de résoudre ce genre de problème en 2011 est de simplement utiliser un cadre JavaScript existant. jQuery est assez populaire (surtout entre les utilisateurs de Stackoverflow), mais Il y en a beaucoup d'autres aussi . P> document.documentation.scrolltop code> au lieu de
document.body.scrolltop code> (et de même pour
défilant code>). p>
Est-ce toujours le cas en 2017? Il semble ridicule que je devrais avoir à utiliser une bibliothèque tierce pour quelque chose de si simple.
document.documentation.scrolltop fonctionne bien dans les navigateurs modernes ..
Une autre solution:
Fonctionne parfaitement. Merci beaucoup!
Vous pouvez utiliser: p>
window.pageyOffset p>
Zsimo, peut-être que vous pouvez élaborer ce que cela fait et où l'OP peut trouver une référence à ce sujet. Cela augmenterait la qualité de votre réponse.
Bien sûr: je ne pense pas qu'il soit nécessaire d'utiliser jQuery pour le problème avec Firefox le retour 0 avec document.body.scrolltop Utilisez simplement la fenêtre.PageYoffset pour obtenir la distance entre le haut lorsque la page Scroll de la page: développeur.mozilla.org/en-us/docs/web/api/window.scrolly a> simone
Travaillé pour moi. Chrome, IE9, Firefox. Merci @zsimo!
Travaillé pour moi à Chrome, IE10, Firefox
Si vous ne voyez pas le besoin de bibliothèques tiers inutiles, vous pouvez essayer:
var scrollTop = (document.documentElement || document.body.parentNode || document.body).scrollTop;
Cette réponse est fausse. Vous n'avez sûrement jamais essayé ce code.
J'ai eu le même problème et j'ai vérifié mon code pour un débordement défini, supprimer: d'un autre élément travaillée p> p> P>
J'ai fini par avoir à vérifier tous les x millisecondes comme solution de contournement. Pas idéal, mais cela a fonctionné pour moi car je ne pouvais trouver aucune autre solution. Remarque, il s'agit d'un code ES6, donc si vous en avez besoin, vous devez le rendre compatible ES5 manuellement ou utiliser Babel.
Avez-vous envisagé d'utiliser quelque chose comme JQuery pour faire sortir la douleur de la fonctionnalité de navigateur croisée?
@DotNettroOKie: Vous auriez plus d'aide si vous pouviez poster les messages d'erreur réels. Chrome et Firefox ont une vue "JavaScript Console" qui indique des messages d'erreur et d'avertissement à partir du code JavaScript.
@Daniel, il n'y a pas de message d'erreur techniquement. La fenêtre modale apparaît considérablement plus petite que celle conçue pour être (en FF et Chrome).