2011-09-22 5 views
5

Estoy usando Syntaxhighlighter en una página web, he creado una función javascript para cargar todos los pinceles usando SyntaxHighlighter.autoloader (...) y aplicar SyntaxHighlighter.all()Sintaxishighlighter no puede encontrar ningún pincel después de la solicitud de ajax

Ejecuto esta función una vez cuando la página se carga, como resultado: el resaltado de sintaxis se aplica correctamente.

Después, cargo algunos contenidos nuevos usando ajax y ejecuto esta misma función para resaltar también el contenido nuevo.

Sin embargo, esta vez Syntaxhighlighter parece haberse olvidado de todos los pinceles cargados, me aparece una alerta diciendo que el pincel no está cargado.

que no tienen idea de lo que está causando esto aunque he mirado alrededor y encontrado 2 causas posibles:

An issue on the bitbucket repository

Esto se parece a la solución, pero cuando uso los shCore.js sin envasar desde el repositorio de mi IDE indica un error de sintaxis y obtengo errores de JavaScript cuando intento ejecutarlo de todos modos.

Otra solución que he encontrado en algunas respuestas en otras publicaciones similares de Stack Overflow es utilizar SyntaxHighlighter.highlight() en lugar de .all() después de que la página se haya cargado. Esto no funciona sin embargo.

La función que estoy 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(); 
    } 
} 

¿Alguien tiene alguna idea sobre cómo solucionar este problema? (O alguien puede señalar cómo puedo hacer el cambio sugerido en bitbucket)

Gracias

Respuesta

0

Sólo una estimación inicial, que ha impreso el resultado de esto: 'ahk ' + app.assets + 'js/syntaxhighlighter/brushes/shBrushAhk.js'?

Si esta construcción no apunta a la ruta correcta de las escobillas, no se cargarán. Asegúrese también de que la ruta sea correcta en relación con la ruta base relativa que se encuentre.

2

Tuve el mismo problema. Lo acabo de resolver de manera similar a las sugerencias de bitbucket.

Agregar siguiente código justo antes: loadSyntaxHighLighter() llamada:

SyntaxHighlighter.vars.discoveredBrushes=null; 

SyntaxHighlighter se verá obligado a redescubrir cepillos en su página y cargar los appopriate.

Saludos Tom

+1

Esto me ayudó! Muchas gracias (incluso si han pasado casi 4 años desde entonces ...) –

Cuestiones relacionadas