Сохраните пробелы и форматирование для текста, возвращенного из вызова $ .get jquery. - PullRequest
1 голос
/ 05 апреля 2010

У меня в приложении есть вызов jquery $ .get (), который запрашивает всю веб-страницу. В функции обратного вызова я получаю доступ к div на возвращенной странице, получаю его данные и показываю на своей странице.

Проблема в том, что текст, который я получаю из div, не сохраняет исходное форматирование. Если элемент div на запрошенной странице имел упорядоченный список, то когда я получаю этот текст и отображаю его на своей странице, он отображается в виде абзаца со встроенными элементами, а не в виде списка.

Я не знаю, проблема в том, как $ .get () получает данные или в моем отображении данных.

//get the page
        $.get($(this).attr('href'), function(data){
                callbackFunc(data,myLink);
            }, 
            "html");

  function callbackFunc(responseText, customData){

        //response has bg color of #DFDFDF
        var td = $("td[bgcolor='#DFDFDF']", responseText);

        //text to show is in div of that td
        var forumText = $('div', td).text();

        //append new row with request data below the current row in my table
        var currentRow = $(customData).parent('td').parent('tr');
        var toAppend = "<tr><td class='myTd' colspan='3'>" + forumText + "</td></tr>";

        $(currentRow).after(toAppend);
}

Данные ответа отображаются как ABC в новой строке, которую я добавляю к своему div, пока div исходной страницы имел

B
C

Я должен добавить, что этот скрипт является частью расширения для Google Chrome, так что это мой единственный браузер, который я тестировал на

Ответы [ 2 ]

2 голосов
/ 05 апреля 2010

Попробуйте использовать .html вместо .text:

var forumText = $('div', td).html();
0 голосов
/ 28 июля 2016

Я наткнулся на этот поток, потому что мне нужно было сохранить форматирование тоже.Однако использование .html () вместо .text () не вариант, потому что кто-то может внедрить атаку JavaScript таким способом.Я нашел решение, которое искал в этом потоке stackoverflow .

Так, например, измените следующие строки в своем коде, чтобы сохранить пробелы при использовании .text () с использованием стиля CSS пробелов:

var toAppend = '<tr><td class="myTd" colspan="3" style="white-space: pre-line;">' 
+ forumText + "</td></tr>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...