2017-10-11 1 views
0

Juste une petite question sur les barres d'onglets dans ExtJS. J'ai construit des fenêtres avec beaucoup de contrôles et qui se termine par un ensemble de contrôles dans chacun des 6 onglets dans une barre d'onglets. Les contrôles dans chaque onglet sont presque identiques et je ne gère pas un onglet de changement d'événements. Cependant, lorsque je sélectionne un onglet, le focus revient en haut de la boîte de dialogue (défilement juste) et l'utilisateur doit alors redescendre manuellement à l'onglet pour voir les contrôles maintenant visibles.La fenêtre ExtJS saute vers le haut lorsque vous sélectionnez un onglet dans une barre d'onglets

Est-ce que le fait de changer d'onglet engendre une fenêtre Windows? Si c'est le cas, y a-t-il un moyen de m'arrêter?

Je dois avouer que ce qui se passe est limité à un seul de mes deux ordinateurs. J'ai installé l'application terminée dans Azure et lorsque je l'exécute à partir de machine1 dans IE ou Chrome, cela fonctionne très bien. Mais si j'utilise machine2 avec les mêmes versions d'IE et de Chrome, le saut et quelques événements étranges ont lieu. Y a-t-il une valeur dépendant de la machine qui pourrait provoquer le saut?

Merci

Répondre

0

Juste pour vous faire savoir que j'ai découvert ce qui se passait avec un peu de creuser plus autour. La différence entre mes deux PC est que l'ordinateur portable a un écran tactile. Cela provoque ExtJS à ajouter dans des classes de défilement spéciales pour faire face à l'utilisateur de défilement sur le corps de la boîte de dialogue avec son doigt.

Il y a quelques problèmes que cela a créés pour moi. Tout d'abord, le saut vers le haut a été provoqué par une réinitialisation du scroller après la commutation de l'onglet actif. La fonction de réinitialisation a supprimé certaines choses, y compris le réglage du défilement vers le haut. Il est intéressant de noter que la commutation de la page à onglet a entraîné la réinitialisation de 96 scollers. Je ne peux pas imaginer pourquoi ce serait le cas et je suspecte que cela provoque une actualisation complète de la boîte de dialogue, plutôt que seulement l'onglet, que je ne vois pas pourquoi l'actualisation est nécessaire de toute façon. Je cherche un moyen d'empêcher cela.

J'ai mentionné d'autres problèmes ci-dessus. Le premier était que le deuxième onglet était vide mais avec des barres de défilement. Nous pourrions les utiliser pour voir le bon contenu de l'onglet. J'ai trouvé que c'était un bug Ext JS. Par erreur, lorsque Ext JS a activé l'onglet suivant, il a placé l'onglet en dehors de la classe de défilement (marquée par x-scroll-scroller) plutôt qu'à l'intérieur. Cela a conduit à devenir confus. Pour résoudre ce problème, j'ai ajouté du code dans la fonction getRenderTarget de la classe Ext.layout.container.Container. Auparavant, c'était tout simplement

getRenderTarget: function() { 
    return this.owner.getTargetEl(); 
} 

J'ai ajouté un test spécifique pour voir si le premier enfant était une barre de défilement, et qui est le cas, le retour à la place changeurs. La parenté des contrôles de tabulation était maintenant maintenue correctement et les autres artefacts étranges que j'ai brièvement évoqués ci-dessus ont disparu.

Donc l'état actuel du jeu. Je cherche le moyen d'arrêter le refesh et je le mettrai à jour quand je le trouverai, mais le support de l'écran tactile est définitivement flakey.

FYI. J'utilise Ext JS 6.1.