2010-05-02 9 views
32

Estoy usando el procesador de marcado Maruku. Me gustaría estoIncrustar javascript en el descuento

*blah* blah "blah" in [markdown](blah) 

<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script> 
...do stuff... 
</script> 

pero se queja cuando lo presento con una multitud de errores. El primero es

___________________________________________________________________________ 
| Maruku tells you: 
+--------------------------------------------------------------------------- 
| Could you please format this better? 
| I see that "<script type='text/javascript'>" is left after the raw HTML. 
| At line 31 
| raw_html  |<script src='http://code.jquery.com/jquery-1.4.2.min.js' /><script type='text/javascript'>| 
|  text --> |//<![CDATA[| 

y luego el resto parece que el analizador se está volviendo loco. Luego convierte el javascript en un div en la página. Intenté convertirlo en un bloque CDATA y espacio adicional entre el jquery y mi script.

¿Ayuda?

Respuesta

26

Tuve el mismo problema, pero logré que JavaScript apareciera en mi código colocando una nueva línea después de la etiqueta de apertura.

+0

Leyenda, muchas gracias. Esto funciona bien +1 – Kezzer

+0

Gracias, pasé mucho tiempo buscando una solución a esto. – Jack

+0

funciona como un encanto! – gongzhitaao

2

El ejemplo que dan on their site muestra una etiqueta <script> vacía que contiene una nueva línea. Tal vez eso es todo?

+0

es de rebajas eso está creando eso ... mi código actual es '

1

Puede usar pandoc, que maneja esta entrada (y javascript en general) bien.

13

solución diferente que podría funcionar en algunos casos: (la respuesta seleccionada no funcionó para mí cuando yo estaba tratando de incrustar un ejemplo CodePen)

  • Agregar a su disposición por defecto:

    <!-- Custom JavaScript files set in YAML front matter --> 
    {% for js in page.customjs %} 
    <script async type="text/javascript" src="{{ js }}"></script> 
    {% endfor %} 
    
  • en los puestos donde se necesita algunos archivos JavaScript, puede añadirlos en la materia frente YAML así:

    --- 
    layout: post 
    title: Adding custom JavaScript for a specific post 
    category: posts 
    customjs: 
    - http://code.jquery.com/jquery-1.4.2.min.js 
    - http://yourdomain.com/yourscript.js 
    --- 
    

El async puede que no sea necesario o no se desee, pero probablemente podría agregarlo como un parámetro en customjs.(Ver YAML front matter for Jekyll and nested lists para más detalles)

+0

¡Gracias! Esto es * exactamente * donde me encontré con el problema - CodePen incrustado en un sitio de Jekyll. – brenna

+0

Esta es una gran solución; sin embargo, si necesita colocar el script en algún lugar entre el texto de la plantilla, ¿cómo lo hace? Como mencionaste, querías usar esto para el ejemplo de CodePen (en mi caso, quiero usar esto para el ejemplo de JSFiddle). Entonces necesito colocar el script dentro del texto de mi archivo de descuento. –

1

me encontré con que se escape el cierre '>' símbolo tanto, las etiquetas de apertura y cierre de 'guión', se mostrará correctamente, por ejemplo:

  • Si escribe la siguientes aparatos:

    <script\>... javascript code...</script\> 
    
  • será generado de esta manera:

    <script>... javascript code...</script> 
    

Eso es solo mis dos centavos.

+0

No funciona, arroja 'HTML mal formado a partir de ...' –

0

Una buena idea es tener fuentes js locales y en la nube separados:

En el archivo de mensaje:

cloudjs: 
- //cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js 
- //cdnjs.cloudflare.com/ajax/libs/topojson/1.6.9/topojson.min.js 
localjs: 
- datamaps.world.min.js 
- custom.js 

En el archivo predeterminado después de pie de página de su inclusión:

{% for js in page.cloudjs %} 

     <script type="text/javascript" src="{{ js }}"></script> 

    {% endfor %} 


    {% for js in page.localjs %} 

     <script type="text/javascript" src="{{ "/assets/scripts/" | prepend: site.baseurl | append: js }}"></script> 

    {% endfor %} 
Cuestiones relacionadas