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

访客3年前黑客工具297

​在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米代金券、领会最新阿里云产物的种种优惠流动点击进入

相关文章

少将军衔?什么人可以被授予少将军衔?

少将军衔?什么人可以被授予少将军衔?

什么人可被授予少将军衔? 2013年12月底升任武警广西总队政委的独臂英雄丁晓兵,在2014年12月与另外17名警官一起晋升为武警少将。 图片说明:07式少将军衔 少将是将级军官中较低的一级...

黑客帝国上映的电影(黑客帝国是哪个电影公司)

黑客帝国上映的电影(黑客帝国是哪个电影公司)

本文导读目录: 1、黑客帝国2:重装上阵完整版电影 2、黑客帝国123部的英文名分别是什么 3、《黑客帝国4》中国内地宣布定档,这部影片主要讲述的是什么故事? 4、求黑客帝国全部系列电影。...

防止黑客入侵的最有效的办法(防范黑客入侵的十种方法)

防止黑客入侵的最有效的办法(防范黑客入侵的十种方法)

本文目录一览: 1、防止黑客攻击的方法有哪些? 2、怎么防止黑客入侵电脑 3、怎么防止手机被黑客入侵 4、如何防范黑客入侵的方法 防止黑客攻击的方法有哪些? 从技术上对付黑客攻击,主要采...

房产知识:房产证可以二次借贷吗 房产已经抵押

相信现在有很多的朋友们对于房产证可以二次借贷吗 房产已经抵押了还可以二次抵押贷款吗都想要了解吧,那么今天小编就来给大家针对房产证可以二次借贷吗 房产已经抵押了还可以二次抵押贷款吗进行一个介绍吧,希望小...

男女看脸后态度差异 为什么男人找对象都看脸

男女看脸后态度差异 为什么男人找对象都看脸

在这个主要看气质的时期,很多人对表面的关心愈来愈高,男女在看颜后的心态差别是有一定转变的,相对而言男生谈对象更注重表面,那麼,男孩和女孩看颜后心态差别?为什么男人谈对象都看颜?下边我而言说。 男...

2020双十一淘宝衣服能便宜多少-淘宝双十一有什么

大伙儿会发觉如果是购买衣服或是鞋等用具绝大多数人都是会在淘宝平台上选购,因而在即将来临的双十一一些哪些主题活动便是大伙儿较为关心的,要想要知道2020双十一淘宝衣服裤子能划算是多少最先就需要了解淘宝双...