Voilà l’objet du délit :
var viewSource = function(prefix, filename, content) {
var cm_editor; // Codemirror instance
var src =
'<div class="' + prefix + '_view">' +
'<h1>' + filename + '</h1>' +
'<textarea id="' + prefix + '_source">' + $.parseJSON(window.atob(content)) + '</textarea>' +
'</div>';
$.magnificPopup.open({
items: {
src: src,
type: 'inline'
},
callbacks: {
open: function() {
if (dotclear.colorsyntax) {
// Popup opened, format textarea with codemirror
var options = {
mode: 'text/html', // 'application/x-httpd-php',
tabMode: 'indent',
lineWrapping: "true",
lineNumbers: "true",
matchBrackets: "true",
autoCloseBrackets: "true",
readOnly: "true"
};
if (dotclear.colorsyntax_theme !== '') {
options.theme = dotclear.colorsyntax_theme;
}
var textarea = document.getElementById(prefix + '_source');
cm_editor = CodeMirror.fromTextArea(textarea, options);
}
},
close: function() {
if (cm_editor !== undefined && cm_editor !== null) {
// Remove Codemirror instance
cm_editor.toTextArea();
}
}
}
});
}
Soit le code qui me sert (pour l’instant), dans le plugin sysInfo, pour afficher le code source d’un fichier cache (template ou statique).
Ce qui est étrange c’est qu’une fois sur deux ça fonctionne ; en fait ce n’est pas tout à fait une fois sur deux, mais plutôt que le premier affichage d’un fichier A se fait correctement, celui d’un fichier B passe fugacement par Codemirror (pourtant j’ai tracé son appel) puis revient à un affichage normal de la textarea et celui d’un fichier C n’est même plus passé par la moulinette de Codemirror.
Étrange et bizarre…
Je viens de faire une vidéo qui illustre le problème :
1 De mirovinben -
Tu utilises quel navigateur ?
J’ai l’impression que Firefox 52 avec un nouveau mécanisme d’accélération de l’affichage d’une page oueb a parfois des comportements bizarres.
Par exemple, constaté chez moi et en ligne, du côté CSS pour peu qu’on style des effets de découpe (ombre interne avec
par exemple). Il amplifie abusivement l’effet de découpe alors que la console CSS du navigateur ne signale rien d’anormal. Un simple scroll “va et vient” de la page remet les choses en place… !!??Peut-être est-il trop zélé de la même façon côté scripts.
2 De Franck -
Je fais tous mes tests avec la version de développement de Firefox, qui en est à cette heure à la version 54.0a2 (2017-03-19)
3 De Franck -
J’ai ajouté une vidéo dans le billet pour illustrer le problème.
4 De Franck -
Et je viens de faire quelques tests avec Google Chrome Canary, c’est assez aléatoire en fait, mais on observe le même genre de comportement.
Je me demande si je ne devrais pas mettre une temporisation avant de charger Codemirror…