html5中contenteditable属性若是过滤标签,过滤富文本样式

访客4年前黑客工具331

​在div中使用contenteditable=”true”可以到达模拟输入框的效果,然则当我们复制其他网页内容进去的时刻,会发现连带的样式也一起复制进去了。很明显我们不需要复制富文本样式,那么若何过滤这些标签呢?


查阅资料,发现若是只保证支持HTML5的webkit内核浏览器,现在有一些方式如下:

方式一:

<div contenteditable="plaintext-only" id="content"></div>

方式二:基于css

user-modify: read-write-plaintext-only;   
-webkit-user-modify: read-write-plaintext-only


若是在非 webkit 的内核,我们需要思量使用js来实现,首先想到的是:

var d= document.getElementById( "content" );
document.addEventListener( "keydown", function() {
    d.innerHTML = d.innerHTML.replace( /<[^>]*>/g, "" );
});

发现效果同上面大要一样,这样虽然能过滤样式,然则有许多问题,好比光标始终在首位、输入框不能插入脸色、换行符失效等问题。 上网查了一下别人是怎么做的发现可以通过修改复制事宜来过滤样式:

function pasteFilter(e){
    e.preventDefault();
    var text = null;
    //获得剪贴板中的文本
    if(window.clipboardData && clipboardData.setData) {
        // IE
        text = window.clipboardData.getData('text');
    }else{
    	try{
    		text = (e.originalEvent || e).clipboardData.getData('text/plain');
    	}catch(e){
    		return;
    	}
    };
    if (document.body.createTextRange) {    
        if (document.selection) {
            textRange = document.selection.createRange();
        } else if (window.getSelection) {
            sel = window.getSelection();
            var range = sel.getRangeAt(0);
            // 建立暂且米素,使得TextRange可以移动到准确的位置
            var tempEl = document.createElement("span");
            tempEl.innerHTML = "&#FEFF;";
            range.deleteContents();
            range.insertNode(tempEl);
            textRange = document.body.createTextRange();
            textRange.moveToElementText(tempEl);
            tempEl.parentNode.removeChild(tempEl);
        };
        textRange.text = text;
        textRange.collapse(false);
        textRange.select();
    } else {
        // Chrome之类浏览器
        document.execCommand("insertText", false, text);
    };
};
var d= document.getElementById( "content" );
d.addEventListener("keydown",function(e){
	if (e.ctrlKey || e.metaKey) {
		if(e.keyCode==117){
			pasteFilter(e);
		}
	}
},false);



思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

相关文章

为什么拉屎会拉出血(大便带血的原因是什么)

  为何大便会拉出血(大便出血的原因是什么)身体每日都需要根据基础代谢将身体的内毒素排出来身体之外,而排出来身体之外的方式便是根据日常的上厕所,上厕所的特性还可以分辨我的身体是不是有病症。   为何大...

手机促销活动(手机十大促销方式)

手机促销活动(手机十大促销方式)

手机促销活动(手机十大促销方式)促销活动总的来说,分为两大类,一是针对消费者的促销活动,也就是我们最熟悉的促销活动,另一类就是针对经销商和促销人员的促销活动。针对经销商,主要是返利和广告支持等;对促销...

来历(来历历罗颖微博)

来历(来历历罗颖微博)

本文导读目录: 1、来历是什么? 2、由来与来历 3、来历的意思是什么 4、中国名称的来历 5、“来历”的意思 6、来历?什么意思 7、来历和由来是一样的吗?意思 8、来源...

微信聊天记录截屏长图方法「微信记录删除了怎么恢复聊天记录」

  1、找到需要截取的聊天记录所在的聊天界面,下拉通知栏,找到并点击【截屏】图标。   2、在截图成功的瞬间,点击截下的图。   3、点击【滚动截屏】,滑动屏幕即可。   截图是由计算机截取的能...

湖北一周核酸检测150万人次 无症状感染者检出率万分之0.46

武汉室内影剧院何时开放?严格评估,视情况逐步稳妥有序开放 长江网5月18日讯(记者范婷婷) 18日,湖北省新型冠状病毒肺炎疫情防控工作指挥部召开第97场新闻发布会,介绍湖北省新冠肺炎疫情常态化科学精...

黑客盗,黑客wifi网络,找黑客窜改网站

sc TARGET query IKEEXT3.1.2Group(APT37)结语但研究人员发现Windows DNS服务器在满足特定条件的状态下会应对DNAME纪录根的乞求。纪录需求与GQBL列表...