js追加html内容换行符,javascript – 从HTML中提取文本,同时保留块级元素换行符

考虑:

/**

* Returns the style for a node.

*

* @param n The node to check.

* @param p The property to retrieve (usually 'display').

* @link http://www.quirksmode.org/dom/getstyles.html

*/

this.getStyle = function( n, p ) {

return n.currentStyle ?

n.currentStyle[p] :

document.defaultView.getComputedStyle(n, null).getPropertyValue(p);

}

/**

* Converts HTML to text, preserving semantic newlines for block-level

* elements.

*

* @param node - The HTML node to perform text extraction.

*/

this.toText = function( node ) {

var result = '';

if( node.nodeType == document.TEXT_NODE ) {

// Replace repeated spaces, newlines, and tabs with a single space.

result = node.nodeValue.replace( /\s+/g, ' ' );

}

else {

for( var i = 0, j = node.childNodes.length; i < j; i++ ) {

result += _this.toText( node.childNodes[i] );

}

var d = _this.getStyle( node, 'display' );

if( d.match( /^block/ ) || d.match( /list/ ) || d.match( /row/ ) ||

node.tagName == 'BR' || node.tagName == 'HR' ) {

result += '\n';

}

}

return result;

}

也就是说,有一个例外或两个,遍历每个节点并打印其内容,让浏览器的计算样式告诉你什么时候插入换行符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值