форматирование предварительного блока для удаления первого отступа после того, как Ajax вставил данные в кодовый блок html? - PullRequest
2 голосов
/ 08 мая 2020

Я обычно использую приведенный ниже фрагмент, чтобы удалить первый отступ из моих блоков

, который отлично работает.  Однако я использую вызов Ajax для заполнения html кода блок, который после завершения, он больше не форматируется, ive попытался поместить код предварительного форматирования после того, как результат был заполнен, но он все еще выходит с большим отступом в первой строке  Я также пытался отформатировать данные .result with, который тоже не работал  var pattern = data.result.match(/\s*\n[\t\s]*/);
results.html(data.result.replace(new RegExp(pattern, "g"),'\n'));

вот код:

<script>
    $("pre").each(function(){
        var html = $(this).html();
        var pattern = html.match(/\s*\n[\t\s]*/);
        $(this).html(html.replace(new RegExp(pattern, "g"),'\n'));
    });
    var waiting = $('#waiting').hide()
    {% if task_id %}
        var task_id = "{{ task_id }}";
        var results = $('#results');

        get_task_info(task_id);

        function get_task_info(task_id) {
            $.ajax({
                type: 'get',
                url: '/monitoring/get_task_info/'+task_id,
                data: {'task_id': task_id},
                success: function (data) {
                    results.html('');
                    if (data.state == 'PENDING') {
                        waiting.show();
                    }
                    else if(data.state == 'SUCCESS'){
                        waiting.hide();
                        results.html(data.result);
                        $("pre").each(function(){
                            var html = $(this).html();
                            var pattern = html.match(/\s*\n[\t\s]*/);
                            $(this).html(html.replace(new RegExp(pattern, "g"),'\n'));
                        });
                    }
                    if (data.state != 'SUCCESS') {
                        setTimeout(function () {
                            get_task_info(task_id)
                        }, 2000);
                    }
                },
                error: function (data) {
                    results.html("Error!");
                }
            });
        }
    {% endif %}
</script>

EDIT: JS Fiddle Here https://jsfiddle.net/ajwill0/ty7s39ko/2/

как ни странно, в скрипке ни один вариант не работает, у меня большой отступ там, где его не должно быть ...

1 Ответ

1 голос
/ 15 мая 2020

Итак, настоящая проблема заключается в том, что между концом тега pre и началом тега code

Вариант 1 : css отображается пробел, как указано в @ Swati в комментарии

Вариант 2 : отредактируйте HTML и удалите все пробелы

например,

<pre><code>This is page rendered informatiom

Пример JsFiddle: https://jsfiddle.net/Lar916t0/1/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...