J'utilise la réponse acceptée à this question pour construire une zone de texte qui se développe verticalement déversoirs texte:Comment arrêter fenêtre sauter en tapant dans un redimensionnement automatique textarea
<!DOCTYPE html>
<html>
<head>
<title>autoresizing textarea</title>
<style type="text/css">
textarea {
border: 0 none white;
overflow: hidden;
padding: 0;
outline: none;
background-color: #D0D0D0;
resize: none;
}
</style>
<script type="text/javascript">
var observe;
if (window.attachEvent) {
observe = function (element, event, handler) {
element.attachEvent('on'+event, handler);
};
}
else {
observe = function (element, event, handler) {
element.addEventListener(event, handler, false);
};
}
function init() {
var text = document.getElementById('text');
function resize() {
text.style.height = 'auto';
text.style.height = text.scrollHeight+'px';
}
/* 0-timeout to get the already changed text */
function delayedResize() {
window.setTimeout(resize, 0);
}
observe(text, 'change', resize);
observe(text, 'cut', delayedResize);
observe(text, 'paste', delayedResize);
observe(text, 'drop', delayedResize);
observe(text, 'keydown', delayedResize);
text.focus();
text.select();
resize();
}
</script>
</head>
<body onload="init();">
<textarea rows="1" style="height:1em;" id="text"></textarea>
</body>
</html>
Il fonctionne bien jusqu'à ce que la taille de la zone de texte se développe plus que la fenêtre du navigateur. À ce moment-là, le haut de la fenêtre saute en haut de la zone de texte chaque fois que vous appuyez sur une touche. Pouvez-vous m'aider à comprendre pourquoi et comment y remédier?
Une solution idéale serait d'empêcher la page de se déplacer. Mais s'il est plus facile de garder le bas de la page attaché au bas de la zone de texte, cela fonctionnera aussi.
J'ai cette question dans Firefox 21,0 et Chrome 28.0: http://jsfiddle.net/CbqFv/
Je n'ai pas ce même problème, dans FF, mais ne voient dans Chrome .. –