1
回答
Javascript 字符串的HTML转义 效率
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

    本人最近在做网页的时候遇到了一个比较牛角尖的问题:

一般如何用javascript实现对字符串的HTML转义处理(即:将<转化成&lt;等)

    根据本人查阅资料,结合经验想出了两种方法:

  1.     使用正则表达式
  2.     使用HTML DOM 

    贴出本人的代码:

window.myHTML = {
				'text2html1' : function(str){
					return str.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/ /g,'&nbsp;');
				},
				'init_text2html2' : function(){
					myHTML.e = document.createElement('div');
				},
				'text2html2' : function(str){
					myHTML.e.innerHTML = '';
					myHTML.e.appendChild(document.createTextNode(str));
					return myHTML.innerHTML;
				}
			};
			var str = '<test>hahaha Hello&World!';
			myHTML.init_text2html2();
			for(var j = 0 ; j < 10 ; j++){
				start();
				for(var i = 0;i < 10000;i++){
					myHTML.text2html2(str+i+j);
				}
				stop('TextNode处理法');
				start();
				for(var i = 0;i < 10000;i++){
					myHTML.text2html1(str+i+j);
				}
				stop('正则表达式处理法');
			}
			function start(){
				window.recordTime = new Date().getTime();
			}
			function stop(name){
				var t = new Date().getTime();
				t = t - recordTime;
				document.write('"'+name+'"耗时:&nbsp;&nbsp;&nbsp;'+t+"ms<br />");
			}



    结果发现,这两种方法的耗时基本持平,而且时好时坏:

    

"TextNode处理法"耗时:   41ms
"正则表达式处理法"耗时:   24ms
"TextNode处理法"耗时:   16ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   17ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   15ms
"正则表达式处理法"耗时:   12ms
"TextNode处理法"耗时:   16ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   15ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   15ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   15ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   15ms
"正则表达式处理法"耗时:   13ms
"TextNode处理法"耗时:   16ms
"正则表达式处理法"耗时:   12ms



     所以在这里我想问一下前端大神们,你们一般是用哪种方法实现的呢?哪种方法更加节省时间和空间呢?谢谢

举报
刘越
发帖于2年前 1回/309阅
顶部