diff --git a/src/base/single/text.js b/src/base/single/text.js index 00eb774cd..bc316725d 100644 --- a/src/base/single/text.js +++ b/src/base/single/text.js @@ -104,21 +104,28 @@ _getShowText: function () { var o = this.options; - return BI.isFunction(o.text) ? o.text() : o.text; + var text = BI.isFunction(o.text) ? o.text() : o.text; + text = BI.isKey(text) ? text : o.value; + return BI.Text.formatText(text + ""); }, - - doRedMark: function (keyword) { + _doRedMark: function (keyword) { var o = this.options; // render之后做的doredmark,这个时候虽然标红了,但是之后text mounted执行的时候并没有keyword o.keyword = keyword; - this.text.element.__textKeywordMarked__(this._getShowText() || o.value, keyword, o.py); + this.text.element.__textKeywordMarked__(this._getShowText(), keyword, o.py); + }, + + doRedMark: function (keyword) { + if (BI.isKey(keyword)) { + this._doRedMark(keyword); + } }, unRedMark: function () { var o = this.options; o.keyword = ""; - this.text.element.__textKeywordMarked__(this._getShowText() || o.value, "", o.py); + this.text.element.__textKeywordMarked__(this._getShowText(), "", o.py); }, doHighLight: function () { @@ -144,13 +151,7 @@ BI.Text.superclass.setText.apply(this, arguments); // 为textContext赋值为undefined时在ie和edge下会真的显示undefined this.options.text = BI.isNotNull(text) ? text : ""; - if (BI.isIE9Below()) { - this.text.element.html(BI.htmlEncode(BI.Text.formatText(this._getShowText()))); - return; - } - // textContent性能更好,并且原生防xss - this.text.element[0].textContent = BI.Text.formatText(this._getShowText()); - BI.isKey(this.options.keyword) && this.doRedMark(this.options.keyword); + this._doRedMark(this.options.keyword); } }); var formatters = []; diff --git a/src/core/platform/web/jquery/fn.js b/src/core/platform/web/jquery/fn.js index 397f1408f..4d95e67a7 100644 --- a/src/core/platform/web/jquery/fn.js +++ b/src/core/platform/web/jquery/fn.js @@ -78,7 +78,12 @@ if (BI.jQuery) { */ __textKeywordMarked__: function (text, keyword, py) { if (!BI.isKey(keyword) || (text + "").length > 100) { - return this.html(BI.htmlEncode(text)); + if (BI.isIE9Below()) { + return this.html(BI.htmlEncode(text)); + } + // textContent性能更好,并且原生防xss + this[0].textContent = text; + return this; } keyword = keyword + ""; keyword = BI.toUpperCase(keyword);