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, '&'); }, // 打开新窗口