/*
* 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
共70个文件
png:45个
js:10个
wxss:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 191 浏览量
2023-02-01
09:41:46
上传
评论
收藏 824KB ZIP 举报
温馨提示
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所涉及的版权问题或内容负法律责任。如有侵权,请举报或通知本人删除。
资源推荐
资源详情
资源评论
收起资源包目录
微信小程序 知乎日报1(截图+代码).zip (70个子文件)
知乎日报1
3.png 51KB
1.png 283KB
ZhiHuDaliy
pages
splash
splash.wxml 334B
splash.wxss 599B
splash.js 1KB
detail
detail.js 4KB
detail.wxml 6KB
detail.wxss 3KB
index
index.wxml 5KB
index.js 8KB
index.wxss 3KB
comment
comment.js 3KB
comment.wxss 764B
comment.wxml 2KB
comment.json 42B
setting
setting.js 349B
setting.wxml 1KB
setting.wxss 744B
app.json 342B
project.config.json 483B
app.js 1KB
utils
htmlParseUtil.js 23KB
util.js 7KB
app.wxss 2KB
requests
request.js 3KB
api.js 2KB
images
folder.png 206B
fav_active.png 428B
plus.png 120B
share_plus.png 1KB
insert_emoticon.png 904B
share_qq.png 2KB
file_download.png 184B
download.png 300B
share_qzone.png 2KB
share_weibo.png 2KB
refresh.png 598B
logo.png 3KB
download_active.png 313B
favorite.png 541B
list_active.png 110B
home.png 471B
setting_active.png 418B
favorite_outline.png 310B
share_pengyouquan.png 2KB
star_white.png 2KB
share_alipay.png 2KB
share.png 647B
thumb_up.png 438B
insert_comment.png 328B
send.png 234B
setting.png 3KB
folder_active.png 210B
format_quote.png 274B
user.png 608B
list.png 111B
user_active.png 628B
logo.jpg 29KB
star_yellow.png 4KB
star_active.png 687B
thumb_up_active.png 423B
star.png 855B
fav.png 3KB
comment.png 217B
6.png 51KB
5.png 90KB
4.png 89KB
8.png 20KB
7.png 67KB
2.png 86KB
共 70 条
- 1
资源评论
大富大贵7
- 粉丝: 317
- 资源: 8869
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功