Вставить JavaScript в уценке - PullRequest
39 голосов
/ 02 мая 2010

Я использую процессор уценки Maruku. Я хотел бы это

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

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

но он жалуется, когда я рендую его с множеством ошибок. Первый из них

 ___________________________________________________________________________
| 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[|

а потом кажется, что парсер сходит с ума. Затем он рендерит javascript в div на странице. Я попытался сделать его блоком CDATA и лишним интервалом между jquery и моим скриптом.

Помощь

Ответы [ 9 ]

30 голосов
/ 28 августа 2011

У меня была такая же проблема, но мне удалось заставить JavaScript появляться в моем коде, поместив новую строку после открывающего тега.

15 голосов
/ 19 июля 2013

Другое решение, которое может работать в некоторых случаях: (выбранный ответ не работал для меня, когда я пытался встроить пример CodePen)

  • добавьте это в макет по умолчанию:

    <!-- Custom JavaScript files set in YAML front matter -->
    {% for js in page.customjs %}
    <script async type="text/javascript" src="{{ js }}"></script>
    {% endfor %}
    
  • В сообщениях, где вам нужны файлы JavaScript, вы можете добавить их в текст YAML следующим образом:

    ---
    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
    ---
    

async может быть не нужен или не нужен, но вы, вероятно, можете добавить его в качестве параметра в customjs. (подробности см. YAML для Jekyll и вложенных списков )

4 голосов
/ 23 февраля 2011

Markdown поддерживает встроенный XHTML, но не Javascript.

3 голосов
/ 02 мая 2010

Пример, который они дают на своем сайте , показывает пустой тег <script>, содержащий новую строку. Может быть, это все?

1 голос
/ 14 октября 2013

Я обнаружил, что экранирование закрывающего символа '>' в обоих, открывающий и закрывающий теги 'script', будет отображать его правильно, например:

  • Если вы введете следующее:

    <script\>... javascript code...</script\>
    
  • Будет отображаться так:

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

Это только мои два цента.

1 голос
/ 16 июня 2012

Вы можете использовать pandoc , который прекрасно обрабатывает этот ввод (и вообще JavaScript).

0 голосов
/ 12 февраля 2019

Просто сделайте отступ в первой строке, содержащей тег .

0 голосов
/ 26 сентября 2017

Хорошей идеей является разделение локальных и облачных js-источников:

В почтовом файле:

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  

В файле по умолчанию после включения нижнего колонтитула:

   {% 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 %}
0 голосов
/ 24 мая 2012

По моему опыту, уценка превзойдет текст javascript как обычный текст, если вы удалите форматирование кода, которое может сбить с толку уценку.

  1. удалить комментарии из javascript, так как / * ... * / переводится в
  2. удалить пробел в начале каждой строки.

    может быть вставлен в соответствии с вашим отступом.

По сути, я проверяю сгенерированный html и выясняю, какие дополнительные теги вставляются между моим кодом JavaScript при уценке. И удалите форматирование, которое генерирует дополнительный тег.

...