Après analyse des templates de phpBB2 relatifs à l'éditeur de messages, il apparait qu'il n'y a pas de solution au problème de IE4 !
IE4 (mais aussi d'anciennes versions d'Opera, le souci n'est pas spécifique à un seul navigateur) ne maintient pas la sélection de texte dès qu'on clique sur un bouton. La mise en forme autour de cette sélection n'est pas possible.
En outre, si on tente d'insérer une balise pour ajuster la taille de la police, on obtient un message d'erreur (exactement comme sur phpBB3 lorsqu'on n'utilise pas Legacy). Idem pour la couleur, qui recourt aussi à un <select> (il s'agit là d'une différence notable entre l'éditeur de messages sous phpBB2 et phpBB3). Ce qui mérite d'être souligné, c'est que tous ces soucis d'insertion de balises et de bugs pour la couleur/taille s'observent également avec IE5 16-bit. Moi qui avait toujours cru qu'il était possible de participer à un forum phpBB2 sans encombre sous Windows 3.11, je m'étais trompé (du moins pour le Javascript, peut être que l'envoi de messages fonctionnait correctement ?).
Finalement, IE5 16-bit n'a d'IE5 que le nom ! Toutes mes observations (depuis le mois de mars) vont en ce sens. Que ce soit en matière de JavaScript ou CSS, son comportement semble identique à IE 4.01 SP2 et beaucoup moins à IE5 32-bit. Par exemple, la propriété JavaScript document.getElementById est gérée par toutes les versions d'IE5 sauf... la version pour Windows 3.1 et NT 3.51 (à l'instar de IE4). Quant aux styles CSS, l'exemple suivant est édifiant : http://exanimo.com/examples/css/ie4ever.html >>> le carré s'affiche en rouge sous IE5 16-bit et IE4, en bleu sur tous les autres navigateurs (IE5 32-bit compris). Un hack CSS visant pourtant très explicitement IE4 s'applique ainsi à IE5 16-bit ??? C'est un IE4 déguisé ! Les utilisateurs de Windows 3.1 et de Windows NT 3.51 ont été roulés dans la farine par Microsoft en croyant installer ce pseudo IE5
Bon, je laisse tomber le support des navigateurs inférieures à IE5 32-bit. Que ce soit IE4, IE5 16-bit, Opera 7 et versions antérieures, l'éditeur de messages devrait continuer de fonctionner comme aujourd'hui, ça restera en l'état. A la limite, je pourrais bloquer l'insertion de balises via ces navigateurs, mais cela rajouterait du code qui pourrait avoir des effets secondaires. Surtout, l'insertion de balises fonctionnent encore (bien que manière aussi boiteuse) sur les styles non modifiés de phpBB. Ce serait un comble que Legacy n'autorise pas quelque chose que permettent les styles par défaut. En gros, on peut insérer des balises via IE4, mais la mise en forme à la volée de sélection de texte n'est pas et ne sera pas prise en charge.
PC Rétro : Amstrad PC2086/30, 8086, 640K, VGA, 32Mo RLL
Il s'agit de très peu qui est à peine dérangeant, par rapport à tout ce qu'il est maintenant possible de faire grâce à ton travail ce soucis est vraiment mineur
Félicitation à toi en tout cas pour tout le temps que tu as passé à rendre ce site le plus compatible possible avec les anciens navigateurs
Dernière modification par Vorro le 02 nov. 2016 16:32, modifié 1 fois.
La lacune n°2, en lien avec le menu de notifications, n'est plus .
Bon, reste à changer le comportement de la touche de tabulation !
Si vous faites apparaitre ce menu et que vous cliquez ensuite n'importe où en dehors du dit menu, celui-ci disparait. Le lien 'Réduire' a été supprimé, puisqu'il est devenu caduc .
Pour la deuxième fois, toute la partie CSS/HTML/Javascript en lien avec ce menu a été complètement réécrite ou presque. Il ne s'agit plus d'un <table> mais de <div>, sa largeur est fixée à 310 px tandis que sa hauteur varie mais ne peut excéder guère plus. En cas de débordement de contenu, une barre de défilement apparait. Sous IE9 et ultérieur, un effet esthétique d'ombre est même de la partie.
Enfin, j'ai consacré beaucoup de temps à prévenir l'apparition d'un affreux bug d'affichage en lien avec les <select> sous IE5/IE6
Ce bug est (ou était) connu des développeurs Web ; la solution que j'ai retenue consiste à masquer ou à décaler le <select> incriminé lorsque le menu de notifications est visible. Cela n'a l'air de rien comme ça, mais étant donné qu'il a fallu que je recense tous les <select> possibles et définir des règles en fonction de la hauteur du menu (dépendant du nombre de notifications qui y sont affichées) et du contenu (dynamique et non statique, puisque nous sommes sur un site en phpBB), j'y ai consacré pas mal d'heures de travail rien que pour ça. C'est fou comme la conception d'un style compatible avec les vieux navigateurs peut être chronophage . Je vais encore vérifier si le tout est parfait via une batterie de tests, mais ça devrait être bon...
Que de chemin parcouru depuis le mois de mars. D'un style peu abouti, Legacy est devenu une version améliorée de subsilver2 (plusieurs changements sont issus de prosilver).
Sous IE5+ (32-bit), tout semble parfait. J'ai encore peaufiné certaines choses dernièrement. La seule "lacune" résiduelle concerne l'absence de changement de comportement de la touche tabulation.
Dans une bonne semaine, j'envisage de passer le style à sa version "définitive" 1.0 (pour phpBB 3.1.10, bien que ça soit parfaitement compatible avec phpBB 3.1.9 ). Je proposerai en téléchargement les fruits de mon travail (cela fait un bon moment que j'envisage de le partager). Sait-on jamais si quelqu'un souhaite l'ajouter à son propre forum (que ce soit en style par défaut ou alternatif) . D'ici là, peut être aura-t-on comblé la dernière lacune ?
PC Rétro : 486DX 33 8mo SB Pro 2, P2 450 128mo Voodoo 2 SLI
Peut-être que en attirant d'autres personnes à regarder dans le code, cela fera peut-être plus de mains pour le corriger encore plus, et peut-être même trouver qu'est-ce qui cloche pour les os 16 bits ? (si c'est pas un problème insolvable)
Merci pour ce lien, LiveKiller44, cela pourrait m'être très utile par la suite.
Cependant, il y a un point d'ombre qui reste à éclaircir... comment faire en sorte que le changement de comportement n'ait lieu qu'entre les balises code et /code et pas ailleurs ?
Si le focus se trouve dans l'élément <textarea> MAIS en dehors d'une zone de code, le comportement normal de la touche de tabulation doit être préservé ; c'est comme ça que ça fonctionne par défaut sous phpBB 3.1 et IE9+.
Pour que vous puissiez bien visualiser la chose, basculer vers prosilver. Cliquez sur la touche de tabulation puis insérer une balise code et refaites la même opération à l'intérieur de la zone du code. Vous voyez la différence ? Comment répliquer ça sans jQuery ? Je n'en ai aucune idée et c'est bien pour ça que je fais appel à vous ^^
Il faut trouver le if (on se trouve à l'intérieur d'une balise code) {} mais quoi mettre dans la condition ?
Si ça peut vous aider, voici les ressources utilisées sur Legacy :
/**
* Check if cursor in textarea is currently inside a bbcode tag
*
* @param {object} textarea Textarea DOM object
* @param {Array} startTags List of start tags to look for
* For example, Array('[code]', '[code=')
* @param {Array} endTags List of end tags to look for
* For example, Array('
')
*
* @returns {boolean} True if cursor is in bbcode tag
*/
phpbb.inBBCodeTag = function(textarea, startTags, endTags) {
var start = textarea.selectionStart,
lastEnd = -1,
lastStart = -1,
i, index, value;
if (typeof start !== 'number') {
return false;
}
value = textarea.value.toLowerCase();
for (i = 0; i < startTags.length; i++) {
var tagLength = startTags.length;
if (start >= tagLength) {
index = value.lastIndexOf(startTags, start - tagLength);
lastStart = Math.max(lastStart, index);
}
}
if (lastStart === -1) {
return false;
}
if (start > 0) {
for (i = 0; i < endTags.length; i++) {
index = value.lastIndexOf(endTags, start - 1);
lastEnd = Math.max(lastEnd, index);
}
}
return (lastEnd < lastStart);
};
/**
* Adjust textarea to manage code bbcode
*
* This function allows to use tab characters when typing code
* and keeps indentation of previous line of code when adding new
* line while typing code.
*
* Editor's functionality is changed only when cursor is between
*
bbcode tags.
*
* @param {object} textarea Textarea DOM object to apply editor to
*/
phpbb.applyCodeEditor = function(textarea) {
// list of allowed start and end bbcode code tags, in lower case
var startTags = ['
tag will be returned.
*
* @returns {string} Line of text
*/
function getLastLine(stripCodeStart) {
var start = textarea.selectionStart,
value = textarea.value,
index = value.lastIndexOf('\n', start - 1);
value = value.substring(index + 1, start);
if (stripCodeStart) {
for (var i = 0; i < startTags.length; i++) {
index = value.lastIndexOf(startTags[i]);
if (index >= 0) {
var tagLength = startTags[i].length;
value = value.substring(index + tagLength);
if (startTags[i].lastIndexOf(startTagsEnd) !== tagLength) {
index = value.indexOf(startTagsEnd);
if (index >= 0) {
value = value.substr(index + 1);
}
}
}
}
}
return value;
}
... mais la présence d'un $, donc un appel à jQuery
Merci tortipouss, je suis finalement parvenu à obtenir ce que je cherchais .
Deksor a écrit :
Peut-être que en attirant d'autres personnes à regarder dans le code, cela fera peut-être plus de mains pour le corriger encore plus, et peut-être même trouver qu'est-ce qui cloche pour les os 16 bits ? (si c'est pas un problème insolvable)
Cette fois, ça y est : je distribue mon style de forum .
Je vais marquer une pause dans le développement mais le style continuera d'évoluer, d'où l'emplacement de ce topic (issu de fusions ).
LudaWeb01 a écrit :
ça évite par ailleurs de devoir installer un navigateur comme Opera ou Firefox (qui présentent quand même quelques problèmes d'affichage avec Win3x.Org pour les anciennes versions)
Concernant Firefox, toutes les versions sont compatibles, même la version 1.0 sortie en 2004. Quant à Opera, c'est plus délicat vu que ce navigateur accusait souvent un certain retard au niveau de la prise en charge JavaScript jusqu'à l'adoption de Blink ! Il est ainsi plus facile de supporter IE 5.0 que l'alternative Opera 7.0, pourtant bien plus récent (2004 au lieu de 1999). Cela dit, je me suis surtout concentré sur IE durant le développement de Legacy, puisque c'est le navigateur par défaut de Windows (ça évite de devoir en installer un autre avant de profiter de Win3x.Org, comme tu l'as écrit)
C'est vraiment beaucoup plus propre et épuré. Je vais faire quelques captures avec mon SuperAero, le Compaq Contura Aero 4/33C le plus puissant au monde :
Intel i486SX @ 33 Mhz
Disque Dur en Carte CompactFlash 16Go Transcend Industrial
20 Mo de RAM
Résolution 480x640 et en 16 couleurs.
Windows 95
Je rééditerai le message.
Dernière modification par Matthias le 21 déc. 2016 22:19, modifié 1 fois.