◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
查阅资料,发现若是只保证支持HTML5的webkit内核浏览器,现在有一些方式如下:
<div contenteditable="plaintext-only" id="content"></div>
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米代金券、领会最新阿里云产物的种种优惠流动点击进入
2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各种产物的最新流动,优惠券领取点击进入
3.广告同盟: 整理了现在主流的广告同盟平台,若是你有流量,可以作为参考选择适合你的平台点击进入
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。