2011-09-22 3 views
5

J'utilise Syntaxhighlighter sur une page Web, j'ai fait une fonction javascript pour charger tous les pinceaux en utilisant SyntaxHighlighter.autoloader (...) et appliquer SyntaxHighlighter.all()Syntaxhighlighter ne trouve pas de pinceaux après la requête ajax

Je lance cette fonction une fois quand la page est chargée, résultat: la coloration syntaxique est appliquée correctement.

Ensuite, je charge un nouveau contenu à l'aide ajax et exécuter cette même fonction pour mettre en évidence le nouveau contenu aussi bien.

Mais cette fois SyntaxHighlighter semble avoir oublié tous les pinceaux chargés, je reçois une alerte indiquant la brosse n'est pas chargé.

Je ne sais pas ce qui est la cause de ce même si je l'ai regardé et trouvé 2 causes possibles:

An issue on the bitbucket repository

Cela ressemble à la solution, mais quand on utilise les shCore.js non emballés depuis le dépôt de mon IDE indique une erreur de syntaxe et j'obtiens des erreurs javascript quand j'essaie de l'exécuter quand même.

Une autre solution que j'ai trouvé sur quelques réponses sur d'autres postes de débordement de pile similaire est d'utiliser SyntaxHighlighter.highlight() au lieu de .tous() après que la page a été chargée. Cela ne fonctionne pas cependant.

La fonction que je utilise:

function loadSyntaxHighLighter() { 
    SyntaxHighlighter.autoloader(
      'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js', 
      'aps ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAppleScript.js' 
      //... 
    ); 

    SyntaxHighlighter.defaults['toolbar'] = false; 

    if (SyntaxHighlighter != 'undefined') { 
     SyntaxHighlighter.highlight(); 
    } else { 
     SyntaxHighlighter.all(); 
    } 
} 

Est-ce que quelqu'un a une idée sur la façon de résoudre ce problème? (Ou quelqu'un peut me montrer comment je peux faire le changement proposé sur bitbucket)

Merci

Répondre

0

Juste une estimation initiale, vous avez imprimé le résultat de ceci: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'?

Si cette construction ne pointe pas pour corriger chemin des brosses, ils ne le ferai pas charger. Assurez-vous également que le chemin est correct par rapport au chemin de base relatif que vous êtes.

2

J'ai eu le même problème. Je viens de le résoudre comme les suggestions de bitbucket.

Ajouter code suivant juste avant: loadSyntaxHighLighter() appel:

SyntaxHighlighter.vars.discoveredBrushes=null; 

SyntaxHighlighter sera obligé de redécouvrir les pinceaux sur votre page et chargez-les approprié est utilisé.

Cordialement Tom

+1

Cela m'a aidé! Merci beaucoup (même si ça fait presque 4 ans depuis lors ...) –

Questions connexes