开发者

Preserve whitespace and formatting for text returned from $.get jquery call

开发者 https://www.devze.com 2022-12-25 11:32 出处:网络
I have a jquery $.get() call in my app that requests an entire web page. In the callback function, I access a div in the returned page, get its data and show it on my page.

I have a jquery $.get() call in my app that requests an entire web page. In the callback function, I access a div in the returned page, get its data and show it on my page.

The problem is that the text I get from the div does not preserve the source formatting. If the div in the requested page had say 开发者_开发百科an ordered list, then when i get that text and display on my page, it shows up as a paragraph with items inline instead of being shown as a list.

I do not know whether the problem is how $.get() is getting the data or in my displaying of the data.

//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);
}

The response data shows up like ABC in the new row I add to my div while the source page div had

A

B

C

I should add that this script is part of an extension for Google Chrome so that is my only browser that I have tested on


Try using .html instead of .text:

var forumText = $('div', td).html();


I stumbled across this thread because I needed to preserve the formatting too. However using .html() instead of .text() is not an option because someone could inject a JavaScript attack this way. I found the solution I was looking for on this stackoverflow thread.

So for example, change the following lines in your code to preserve white space while still using .text() using the white-space CSS style:

var toAppend = '<tr><td class="myTd" colspan="3" style="white-space: pre-line;">' 
+ forumText + "</td></tr>";
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号