diff --git a/docs/laytpl/detail/demo.md b/docs/laytpl/detail/demo.md
index f0027251..d40a441c 100644
--- a/docs/laytpl/detail/demo.md
+++ b/docs/laytpl/detail/demo.md
@@ -33,7 +33,7 @@
<textarea id="ID-tpl-data">
{
"title": "Layui 常用组件",
- "desc": "一段带 HTML 内容的描述",
+ "desc": "一段带 HTML 的内容",
"list": [
{
"title": "弹层",
diff --git a/src/modules/laytpl.js b/src/modules/laytpl.js
index 4dbc29c4..fb6f9131 100644
--- a/src/modules/laytpl.js
+++ b/src/modules/laytpl.js
@@ -76,9 +76,9 @@
var vars = {
// 字符转义
escape: function(html) {
- var exp = /[<"'>]|&(?=#[a-zA-Z0-9]+)/g;
+ var exp = /[<"'>]|&(?=#?[a-zA-Z0-9]+)/g;
if (html === undefined || html === null) return '';
- html = ''+ html;
+ html += '';
if (!exp.test(html)) return html;
return html.replace(exp, function(str) {
return ''+ str.charCodeAt(0) + ';';
@@ -472,4 +472,4 @@
}) : global.laytpl = laytpl // 单独引入
)
);
-})(this);
\ No newline at end of file
+})(this);
diff --git a/src/modules/util.js b/src/modules/util.js
index a6411746..d258a2e5 100644
--- a/src/modules/util.js
+++ b/src/modules/util.js
@@ -348,25 +348,24 @@ layui.define('jquery', function(exports) {
// 转义 html
escape: function(html){
- var exp = /[<"'>]|&(?=#[a-zA-Z0-9]+)/g;
- if(html === undefined || html === null) return '';
+ var exp = /[<"'>]|&(?=#?[a-zA-Z0-9]+)/g;
+ if (html === undefined || html === null) return '';
html += '';
- if(!exp.test(html)) return html;
+ if (!exp.test(html)) return html;
- return html.replace(/&(?!#?[a-zA-Z0-9]+;)/g, '&')
+ return html.replace(/&(?=#?[a-zA-Z0-9]+;?)/g, '&')
.replace(//g, '>')
.replace(/'/g, ''').replace(/"/g, '"');
},
// 还原转义的 html
unescape: function(html){
- if(html === undefined || html === null) html = '';
- html += '';
+ if (html === undefined || html === null) return '';
- return html.replace(/\&/g, '&')
- .replace(/\</g, '<').replace(/\>/g, '>')
- .replace(/\'/g, '\'').replace(/\"/g, '"');
+ return String(html).replace(/\"/g, '"').replace(/\'/g, '\'')
+ .replace(/\>/g, '>').replace(/\</g, '<')
+ .replace(/\&/g, '&');
},
// 打开新窗口