Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lzb_79
uni-app
提交
625282f1
U
uni-app
项目概览
lzb_79
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
625282f1
编写于
4月 20, 2021
作者:
fxy060608
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: make html-parser tree-shakeable
上级
0c2a7644
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
295 addition
and
293 deletion
+295
-293
packages/uni-components/src/helpers/html-parser.js
packages/uni-components/src/helpers/html-parser.js
+289
-287
packages/uni-h5/dist/uni-h5.esm.js
packages/uni-h5/dist/uni-h5.esm.js
+6
-6
未找到文件。
packages/uni-components/src/helpers/html-parser.js
浏览文件 @
625282f1
/*
* HTML5 Parser By Sam Blowes
*
* Designed for HTML5 documents
*
* Original code by John Resig (ejohn.org)
* http://ejohn.org/blog/pure-javascript-html-parser/
* Original code by Erik Arvidsson, Mozilla Public License
* http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
*
* ----------------------------------------------------------------------------
* License
* ----------------------------------------------------------------------------
*
* This code is triple licensed using Apache Software License 2.0,
* Mozilla Public License or GNU Public License
*
* ////////////////////////////////////////////////////////////////////////////
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* ////////////////////////////////////////////////////////////////////////////
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Simple HTML Parser.
*
* The Initial Developer of the Original Code is Erik Arvidsson.
* Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights
* Reserved.
*
* ////////////////////////////////////////////////////////////////////////////
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ----------------------------------------------------------------------------
* Usage
* ----------------------------------------------------------------------------
*
* // 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
=
/^<
([
-A-Za-z0-9_
]
+
)((?:\s
+
[
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
(?:\s
*=
\s
*
(?:(?:
"
[^
"
]
*"
)
|
(?:
'
[^
'
]
*'
)
|
[^
>
\s]
+
))?)
*
)\s
*
(\/?)
>/
var
endTag
=
/^<
\/([
-A-Za-z0-9_
]
+
)[^
>
]
*>/
var
attr
=
/
([
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
)(?:\s
*=
\s
*
(?:(?:
"
((?:\\
.|
[^
"
])
*
)
"
)
|
(?:
'
((?:\\
.|
[^
'
])
*
)
'
)
|
([^
>
\s]
+
)))?
/g
// Empty Elements - HTML 5
var
empty
=
makeMap
(
'
area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr
'
)
// Block Elements - HTML 5
// fixed by xxx 将 ins 标签从块级名单中移除
var
block
=
makeMap
(
'
a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video
'
)
// Inline Elements - HTML 5
var
inline
=
makeMap
(
'
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
'
)
export
default
function
HTMLParser
(
html
,
handler
)
{
var
index
var
chars
var
match
var
stack
=
[]
var
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
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
}
// 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
(
'
([
\\
s
\\
S]*?)</
'
+
stack
.
last
()
+
'
[^>]*>
'
),
function
(
all
,
text
)
{
text
=
text
.
replace
(
/<!--
([\s\S]
*
?)
-->|<!
\[
CDATA
\[([\s\S]
*
?)
]]>/g
,
'
$1$2
'
)
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
)
{
tagName
=
tagName
.
toLowerCase
()
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
.
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
}
}
}
function
makeMap
(
str
)
{
var
obj
=
{}
var
items
=
str
.
split
(
'
,
'
)
for
(
var
i
=
0
;
i
<
items
.
length
;
i
++
)
{
obj
[
items
[
i
]]
=
true
}
return
obj
}
/*
* HTML5 Parser By Sam Blowes
*
* Designed for HTML5 documents
*
* Original code by John Resig (ejohn.org)
* http://ejohn.org/blog/pure-javascript-html-parser/
* Original code by Erik Arvidsson, Mozilla Public License
* http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
*
* ----------------------------------------------------------------------------
* License
* ----------------------------------------------------------------------------
*
* This code is triple licensed using Apache Software License 2.0,
* Mozilla Public License or GNU Public License
*
* ////////////////////////////////////////////////////////////////////////////
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* ////////////////////////////////////////////////////////////////////////////
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Simple HTML Parser.
*
* The Initial Developer of the Original Code is Erik Arvidsson.
* Portions created by Erik Arvidssson are Copyright (C) 2004. All Rights
* Reserved.
*
* ////////////////////////////////////////////////////////////////////////////
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* ----------------------------------------------------------------------------
* Usage
* ----------------------------------------------------------------------------
*
* // 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
=
/^<
([
-A-Za-z0-9_
]
+
)((?:\s
+
[
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
(?:\s
*=
\s
*
(?:(?:
"
[^
"
]
*"
)
|
(?:
'
[^
'
]
*'
)
|
[^
>
\s]
+
))?)
*
)\s
*
(\/?)
>/
var
endTag
=
/^<
\/([
-A-Za-z0-9_
]
+
)[^
>
]
*>/
var
attr
=
/
([
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
)(?:\s
*=
\s
*
(?:(?:
"
((?:\\
.|
[^
"
])
*
)
"
)
|
(?:
'
((?:\\
.|
[^
'
])
*
)
'
)
|
([^
>
\s]
+
)))?
/g
// Empty Elements - HTML 5
var
empty
=
/*#__PURE__*/
makeMap
(
'
area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr
'
)
// Block Elements - HTML 5
// fixed by xxx 将 ins 标签从块级名单中移除
var
block
=
/*#__PURE__*/
makeMap
(
'
a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video
'
)
// Inline Elements - HTML 5
var
inline
=
/*#__PURE__*/
makeMap
(
'
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
=
/*#__PURE__*/
makeMap
(
'
colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr
'
)
// Attributes that have their values filled in disabled="disabled"
var
fillAttrs
=
/*#__PURE__*/
makeMap
(
'
checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected
'
)
// Special Elements (can contain anything)
var
special
=
/*#__PURE__*/
makeMap
(
'
script,style
'
)
export
default
function
HTMLParser
(
html
,
handler
)
{
var
index
var
chars
var
match
var
stack
=
[]
var
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
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
}
// 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
(
'
([
\\
s
\\
S]*?)</
'
+
stack
.
last
()
+
'
[^>]*>
'
),
function
(
all
,
text
)
{
text
=
text
.
replace
(
/<!--
([\s\S]
*
?)
-->|<!
\[
CDATA
\[([\s\S]
*
?)
]]>/g
,
'
$1$2
'
)
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
)
{
tagName
=
tagName
.
toLowerCase
()
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
.
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
}
}
}
function
makeMap
(
str
)
{
var
obj
=
{}
var
items
=
str
.
split
(
'
,
'
)
for
(
var
i
=
0
;
i
<
items
.
length
;
i
++
)
{
obj
[
items
[
i
]]
=
true
}
return
obj
}
packages/uni-h5/dist/uni-h5.esm.js
浏览文件 @
625282f1
...
...
@@ -2845,12 +2845,12 @@ _sfc_main$i.render = _sfc_render$i;
var
startTag
=
/^<
([
-A-Za-z0-9_
]
+
)((?:\s
+
[
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
(?:\s
*=
\s
*
(?:(?:
"
[^
"
]
*"
)
|
(?:
'
[^
'
]
*'
)
|
[^
>
\s]
+
))?)
*
)\s
*
(\/?)
>/
;
var
endTag
=
/^<
\/([
-A-Za-z0-9_
]
+
)[^
>
]
*>/
;
var
attr
=
/
([
a-zA-Z_:
][
-a-zA-Z0-9_:.
]
*
)(?:\s
*=
\s
*
(?:(?:
"
((?:\\
.|
[^
"
])
*
)
"
)
|
(?:
'
((?:\\
.|
[^
'
])
*
)
'
)
|
([^
>
\s]
+
)))?
/g
;
var
empty
=
makeMap
(
"
area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr
"
);
var
block
=
makeMap
(
"
a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video
"
);
var
inline
=
makeMap
(
"
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
"
);
var
closeSelf
=
makeMap
(
"
colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr
"
);
var
fillAttrs
=
makeMap
(
"
checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected
"
);
var
special
=
makeMap
(
"
script,style
"
);
var
empty
=
/* @__PURE__ */
makeMap
(
"
area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr
"
);
var
block
=
/* @__PURE__ */
makeMap
(
"
a,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video
"
);
var
inline
=
/* @__PURE__ */
makeMap
(
"
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
"
);
var
closeSelf
=
/* @__PURE__ */
makeMap
(
"
colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr
"
);
var
fillAttrs
=
/* @__PURE__ */
makeMap
(
"
checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected
"
);
var
special
=
/* @__PURE__ */
makeMap
(
"
script,style
"
);
function
HTMLParser
(
html
,
handler
)
{
var
index2
;
var
chars2
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录