html - 在 Ajax 将数据插入 html 代码块后,格式化预 block 以删除第一个缩进?

标签 html jquery ajax

我通常使用下面的代码片段从我的 < pre > block 中删除第一个缩进,效果很好。

但是我使用 Ajax 调用来填充代码块的 html,完成后它不再格式化,我也尝试在结果填充后放置预格式化代码,但它仍然带有大缩进第一行

我还尝试格式化 data.result,但这也不起作用

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>

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

奇怪的是,在 fiddle 中这两个选项都不起作用,我在应该没有的地方有很大的缩进......

最佳答案

因此,实际问题是 pre 标记末尾和 code 标记开头之间显示的空白

选项 1:@Swati 在评论中提到的 css

选项 2:编辑 HTML 并删除所有空格

例如

<pre><code>This is page rendered informatiom</code></pre>

<pre id="output_block"><code id="results"></code></pre>

JsFiddle 示例:https://jsfiddle.net/Lar916t0/1/

如果您不允许/无法编辑 HTML,则需要使用 JavaScript 来实现相同的目的

关于html - 在 Ajax 将数据插入 html 代码块后,格式化预 block 以删除第一个缩进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61680650/

相关文章:

php - 还记得在 php 页面上向 self 提交表单时的 "Radio"值吗?

html选择标签问题

javascript - 使用提交按钮而不是 anchor 标记打开新链接

javascript - 如何固定标题栏

javascript - 如何在选项卡中创建幻灯片

php - 文本区域数据未完全插入

javascript - Bind 在使用 jQuery 的第一个 KeyPress 上不起作用

php - "Add to favorites"使用 mysqli_fetch_assoc 数据库表检索项目的功能

jQuery Ajax - 检查字段后如何继续提交表单

c# - ajax工具包:TabContainer confirm when adding tab