2011-09-22 2 views
5

Sto usando Syntaxhighlighter in una pagina Web, ho creato una funzione javascript per caricare tutti i pennelli utilizzando SyntaxHighlighter.autoloader (...) e applicare SyntaxHighlighter.all()Syntaxhighlighter non trova pennelli dopo una richiesta Ajax

Eseguo questa funzione una volta caricata la pagina, risultato: l'evidenziazione della sintassi viene applicata correttamente.

Successivamente, carico alcuni nuovi contenuti utilizzando ajax ed eseguo questa stessa funzione per evidenziare anche il nuovo contenuto.

Tuttavia questa volta sembra che Syntaxhighlighter abbia dimenticato tutti i pennelli caricati, ricevo un avviso che dice che il pennello non è stato caricato.

ho idea che cosa sta causando questo anche se ho guardato intorno e ha trovato 2 possibili cause:

An issue on the bitbucket repository

Questo appare come la soluzione, ma quando uso lo shCore.js decompressi dal repository mia IDE indica un errore di sintassi e ottengo errori javascript quando provo a eseguirlo comunque.

Un'altra soluzione che ho trovato su alcune risposte su altri post di Overflow dello stack simili è utilizzare SyntaxHighlighter.highlight() anziché .all() dopo che la pagina è stata caricata. Questo non funziona comunque.

La funzione che sto usando:

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(); 
    } 
} 

Qualcuno ha qualche idea su come risolvere questo problema? (O qualcuno mi può indicare come posso fare la modifica suggerita sul bitbucket)

Grazie

risposta

0

solo un'ipotesi iniziale, avete stampato il risultato di questa: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'?

Se questa costruzione non punta al percorso corretto dei pennelli, non verranno caricati. Assicurati anche che il percorso sia giusto in relazione al percorso di base relativo che sei.

2

Ho avuto lo stesso problema. L'ho appena risolto in modo simile ai suggerimenti di bitbucket.

Add seguente codice appena prima: loadSyntaxHighLighter() chiamata:

SyntaxHighlighter.vars.discoveredBrushes=null; 

SyntaxHighlighter sarà costretto a riscoprire pennelli sulla tua pagina e caricare quelli gli appositi.

saluti Tom

+1

Questo mi ha aiutato! Grazie mille (anche se sono passati quasi 4 anni da allora ...) –