2017-06-07 1 views
1

Je veux déclencher le comportement par défaut des navigateurs de sauter au curseur quand quelqu'un commence à écrire et le curseur est de l'écran.Existe-t-il un moyen de déclencher le comportement "défilement vers curseur" par défaut des navigateurs lors de la saisie d'un champ de texte?

Pour l'instant, si je redimensionne le curseur est hors écran et je veux recentrer la barre de défilement sur le curseur après le redimensionnement.

Lorsque je redimensionne et que je tape, la barre de défilement se déplace automatiquement vers la bonne position. Existe-t-il un moyen de déclencher ce comportement "jump to cursor" avec vanilla javascript ou jQuery?

Répondre

0

Vous pouvez utiliser document.activeElement pour sélectionner l'élément ciblé et scrollIntoView():

$(window).resize(function(){ 
 
    element = document.activeElement; 
 
    element.scrollIntoView(true); 
 
});
div{ 
 
    height:200vh; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div> 
 
<input type="text" />

+0

Malheureusement qui ne défile pas au curseur position. Merci cependant :) –

+0

J'ai édité ma réponse avec un extrait de travail. Faites la mise au point tout en bas de l'extrait et remontez la page. 5 secondes après, il va focaliser l'entrée. Tout ce que vous avez à faire maintenant est d'éditer quand le code va se déclencher. – Zenoo

+0

Dans Chrome cela déplace l'extrait de code vers le haut de la page, ce que je voulais dire, l'éditeur est à l'écran et a un débordement, sur le redimensionnement de l'éditeur, la barre de défilement de l'éditeur fait défiler l'écran du curseur. Il s'accroche au curseur lorsque je tape. C'est ce que je veux simuler :) –

0

Hm essayer quelque chose comme ceci:

$('.element').keydown(function (event) { 
    event.preventDefault(); 
    $(this).focus(); 
}); 
+0

Le problème est, cela se déclenche sur un clavier, je veux simuler le comportement "scroll to caret" du clavier. Merci quand même! :) –

+0

Fondamentalement oui, sur l'élément redimensionner la barre de défilement devrait sauter à la position du curseur dans le contenteditable :) –

+0

Si je le fais bien vous voulez utiliser: $ ('item'). Keydown(); ou $ ('item'). focus() à l'événement $ (window) .resize() ??? –