/*
* HTML Parser By John Resig (ejohn.org)
* Original code by Erik Arvidsson, Mozilla Public License
* http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
*
* // Use like so:
* HTMLParser(htmlString, {
* start: function(tag, attrs, unary) {},
* end: function(tag) {},
* chars: function(text) {},
* comment: function(text) {}
* });
*
* // or to get an XML string:
* HTMLtoXML(htmlString);
*
* // or to get an XML DOM Document
* HTMLtoDOM(htmlString);
*
* // or to inject into an existing document/DOM node
* HTMLtoDOM(htmlString, document);
* HTMLtoDOM(htmlString, document.body);
*
*/
// Regular Expressions for parsing tags and attributes
var startTag = /^<(\w+)((?:\s+[\w\-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,
endTag = /^<\/(\w+)[^>]*>/,
attr = /([\w\-]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;
// Empty Elements - HTML 4.01
var empty = makeMap( "area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed" );
// Block Elements - HTML 4.01
var block = makeMap( "address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul" );
// Inline Elements - HTML 4.01
var inline = makeMap( "a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var" );
// Elements that you can, intentionally, leave open
// (and which close themselves)
var closeSelf = makeMap( "colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr" );
// Attributes that have their values filled in disabled="disabled"
var fillAttrs = makeMap( "checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected" );
// Special Elements (can contain anything)
var special = makeMap( "script,style" );
var HTMLParser = function( html, handler ) {
var index, chars, match, stack = [], last = html;
stack.last = function() {
return this[ this.length - 1 ];
};
while( html ) {
chars = true;
// Make sure we're not in a script or style element
if( !stack.last() || !special[ stack.last() ] ) {
// Comment, DOCTYPE INCLUDED
if( html.indexOf( "<!--" ) == 0 ) {
index = html.indexOf( "-->" );
if( index >= 0 ) {
if( handler.comment )
handler.comment( html.substring( 4, index ) );
html = html.substring( index + 3 );
chars = false;
}
//doctype
} else if( html.indexOf( "<!" ) == 0 ) {
index = html.indexOf( ">" );
if( index >= 0 ) {
if( handler.doctype )
handler.doctype( html.substring( 2, index ) );
html = html.substring( index + 1 );
chars = false;
}
//script
} else if( html.indexOf( "<script" ) == 0 ) {
index = html.indexOf( "</script>" );
if( index >= 0 ) {
if( handler.script )
handler.script( html.substring( 7, index ) );
html = html.substring( index + 9 );
chars = false;
}
//style
} else if( html.indexOf( "<style>" ) == 0 ) {
index = html.indexOf( "</style>" );
if( index >= 0 ) {
if( handler.style )
handler.style( html.substring( 7, index ) );
html = html.substring( index + 8 );
chars = false;
}
// end tag
} else if( html.indexOf( "</" ) == 0 ) {
match = html.match( endTag );
if( match ) {
html = html.substring( match[ 0 ].length );
match[ 0 ].replace( endTag, parseEndTag );
chars = false;
}
// start tag
} else if( html.indexOf( "<" ) == 0 ) {
match = html.match( startTag );
if( match ) {
html = html.substring( match[ 0 ].length );
match[ 0 ].replace( startTag, parseStartTag );
chars = false;
}
}
if( chars ) {
index = html.indexOf( "<" );
var text = index < 0 ? html : html.substring( 0, index );
html = index < 0 ? "" : html.substring( index );
if( handler.chars )
handler.chars( text );
}
} else {
html = html.replace( new RegExp( "(.*)<\/" + stack.last() + "[^>]*>" ), function( all, text ) {
text = text.replace( /<!--(.*?)-->/g, "$1" )
.replace( /<!\[CDATA\[(.*?)]]>/g, "$1" );
if( handler.chars )
handler.chars( text );
return "";
});
parseEndTag( "", stack.last() );
}
if( html == last )
throw "Parse Error: " + html;
last = html;
}
// Clean up any remaining tags
parseEndTag();
function parseStartTag( tag, tagName, rest, unary ) {
if( block[ tagName ] ) {
while( stack.last() && inline[ stack.last() ] ) {
parseEndTag( "", stack.last() );
}
}
if( closeSelf[ tagName ] && stack.last() == tagName ) {
parseEndTag( "", tagName );
}
unary = empty[ tagName ] || !!unary;
if( !unary )
stack.push( tagName );
if( handler.start ) {
var attrs = [];
rest.replace( attr, function( match, name ) {
var value = arguments[ 2 ] ? arguments[ 2 ] :
arguments[ 3 ] ? arguments[ 3 ] :
arguments[ 4 ] ? arguments[ 4 ] :
fillAttrs[ name ] ? name : "";
attrs[ name ] = value;//value.replace(/(^|[^\\])"/g, '$1\\\"') //";
//attrs.push({
// name: name,
// value: value,
// escaped: value.replace(/(^|[^\\])"/g, '$1\\\"') //"
//});
});
if( handler.start )
handler.start( tagName, attrs, unary );
}
}
function parseEndTag( tag, tagName ) {
// If no tag name is provided, clean shop
if( !tagName )
var pos = 0;
// Find the closest opened tag of the same type
else
for( var pos = stack.length - 1;pos >= 0;pos-- )
if( stack[ pos ] == tagName )
break;
if( pos >= 0 ) {
// Close all the open elements, up the stack
for( var i = stack.length - 1;i >= pos;i-- )
if( handler.end )
handler.end( stack[ i ] );
// Remove the open elements from the stack
stack.length = pos;
}
}
};
var HTMLtoXML = function( html ) {
var results = "";
HTMLParser( html, {
start: function( tag, attrs, unary ) {
results += "<" + tag;
for( var i = 0;i < attrs.length;i++ )
results += " " + attrs[ i ].name + '="' + attrs[ i ].escaped + '"';
results += ( unary ? "/" : "" ) + ">";
},
end: function( tag ) {
results += "</" + tag + ">";
},
chars: function( text ) {
results += text;
},
comment: function( text ) {
results += "<!--" + text + "-->";
}
});
return results;
};
// this.HTMLtoDOM = function( html, doc ) {
// // There can be only one of these elements
// var one = makeMap( "html,head,body,title" );
// // Enforce a structure for the document
// var structure = {
// link: "head",
// base: "head"
// };
// if( !doc ) {
// if( typeof DOMDocument != "undefined" )
// doc = new DOMDocument();
// else if( typeof document != "undefined" && document.implementation && document.implementation.createDocument )
// doc = document.implementation.createDocument( "", "", null );
// else if( typeof ActiveX != "undefined" )
// doc = new ActiveXObject( "Msxml.DOMDocument" );
// } else
// doc = doc.ownerDocument ||
// doc.getOwnerDocument && doc.getOwnerDocument() ||
// doc;
// var elems = [],
// documentElement = doc.documentElement ||
// doc.getDocumentElement && doc.getDocumentElement();
// // If we're dealing with an empty document then we
// // need to pre-populate it with the HTML document structure
// if( !documentElement && doc.createEleme
没有合适的资源?快使用搜索试试~ 我知道了~
知乎日报1.zip小程序例子源码打包下载适合研究学习技术
共69个文件
png:45个
js:10个
wxss:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 33 浏览量
2022-03-13
04:48:23
上传
评论
收藏 816KB ZIP 举报
温馨提示
知乎日报1.zip小程序例子源码打包下载适合研究学习技术知乎日报1.zip小程序例子源码打包下载适合研究学习技术 1.适合学习做毕业设计参考模板。 2.适合程序员学习开发小程序研究用 3.适合小公司换皮做新项目参考使用用
资源推荐
资源详情
资源评论
收起资源包目录
知乎日报1.zip (69个子文件)
知乎日报1
5.png 90KB
ZhiHuDaliy
requests
api.js 2KB
request.js 3KB
images
share_alipay.png 2KB
folder_active.png 210B
share_plus.png 1KB
star_white.png 2KB
user_active.png 628B
format_quote.png 274B
list.png 111B
refresh.png 598B
folder.png 206B
list_active.png 110B
insert_emoticon.png 904B
thumb_up.png 438B
download_active.png 313B
download.png 300B
share_qzone.png 2KB
thumb_up_active.png 423B
favorite.png 541B
send.png 234B
file_download.png 184B
share_qq.png 2KB
logo.jpg 29KB
setting_active.png 418B
insert_comment.png 328B
star.png 855B
home.png 471B
star_yellow.png 4KB
user.png 608B
fav.png 3KB
share_weibo.png 2KB
comment.png 217B
setting.png 3KB
logo.png 3KB
favorite_outline.png 310B
share_pengyouquan.png 2KB
share.png 647B
star_active.png 687B
fav_active.png 428B
plus.png 120B
app.json 342B
pages
index
index.js 8KB
index.wxss 3KB
index.wxml 5KB
comment
comment.wxss 764B
comment.js 3KB
comment.json 42B
comment.wxml 2KB
splash
splash.wxml 307B
splash.js 991B
splash.wxss 599B
detail
detail.js 4KB
detail.wxss 3KB
detail.wxml 6KB
setting
setting.js 349B
setting.wxml 1KB
setting.wxss 744B
app.wxss 2KB
app.js 1KB
utils
util.js 7KB
htmlParseUtil.js 23KB
1.png 283KB
6.png 51KB
2.png 86KB
7.png 67KB
4.png 89KB
8.png 20KB
3.png 51KB
共 69 条
- 1
资源评论
yxkfw
- 粉丝: 77
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功