原因1:document.onselectstart= function(){return false;};

原因2:父层设置了user-select:none 导致 子层设置了 contenteditable 会出现异常,但是在ie和chrome并没有体现出来

如果把编辑框换成input标签不会由于禁止文本选中而出现光标消失的情况了,可以自己尝试

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{margin:0;padding:0;}
body{position:relative;}
.call-bulk{
position: absolute;
top: 50px;
left: 0;
width:500px;
height: 100px;
background-image: url(http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170823101025wAC.png);
background-position: center bottom;
background-repeat: no-repeat;
background-size: 100% auto;
}
.call{
position: absolute;
left: 0;
bottom: 14px;
width: 100%;
height: 25px;
font-size: 18px;
line-height: 25px;
}
div[contenteditable="true"]:empty:before{
content: attr(placeholder);
color: #BAB3AF;
/*padding: 10px 0;*/
-webkit-tap-highlight-color:transparent;
-webkit-user-modify:read-write;
outline:none;
border:none;
}
</style>
</head>
<body>
<div class="call-bulk" id="call-bulk">
<div class="call" contenteditable="true" placeholder="称呼"></div>
<!-- <input type="text" class="call" placeholder="称呼"> -->
</div>
<button id="btn">换背景</button>
<script>
var imgUrl = [
'http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170825151639dY8.png',
'http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170823101025wAC.png',
'http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170825160657xsv.png',
'http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170822111147c5U.png',
'http://og0bztn1p.bkt.clouddn.com//niannianyun/uploadFiles/nn_imgs/author_img/20170825151639vlO.png'
];
var callBulk = document.getElementById('call-bulk');
var Btn = document.getElementById('btn');
var len = imgUrl.length;
Btn.onclick = function(){
var i = Math.floor(len*Math.random());//(0-1)*5 = 0-5的随机数不包括5,向下取整
// x=Math.random() 0<= x < 1
console.log(1);
console.log(i);
var bgurli = 'url('+ imgUrl[i] + ')';
callBulk.style.cssText = 'background-image:'+ bgurli;
document.onselectstart= function(){return false;};
}
</script>
</body>
</html>

  

div设置contenteditable="true" 光标消失:原因的更多相关文章

  1. div设置contentEditable="true"作为文本编辑器,定位光标解决办法

    function set_focus(el) {    el = el[0]; // jquery 对象转dom对象    el.focus();    if ($.browser.msie) {   ...

  2. div设置contenteditable 的小技巧

    div设置contenteditable="true",即可编辑,除从网页粘贴过来内容的格式 <div contenteditable="true" id ...

  3. 可编辑DIV (contenteditable="true") 在鼠标光标处插入图片或者文字

    近期需开发一个DIV做的编辑器,插入表情图片可直接预览效果,仔细参考了下百度贴吧的过滤粘贴过来文件的THML代码,自己整理了下.写出来只是和大家分享下,我自己也不大懂,经过努力,幸好搞定. 蛋疼的事情 ...

  4. 解决div设置浮动,高度消失

    给包围 浮动的层 加清除浮动样式,样式要兼容的用下面的代码.clearfix {*zoom:1; clear:both;}.clearfix:after{content:".";d ...

  5. 通过js操作,将div设置为contenteditable的内容设为全选状态

    因为div设置为contenteitable可编辑的文本内容用 select()选择全部内容不生效,所以只能用下列方法: 先 creatTextRange或者 createRange <div ...

  6. IOS中div contenteditable=true无法输入

    在IOS中<div contenteditable="true"></div>中点击时可以弹出键盘但是无法输入.加一个样式-webkit-user-sele ...

  7. <div>标签仿<textarea>。contentEditable=‘true’,赋予非表单标签内容可以编辑

    需求:web页面需要一个文本输入框.1.该文本输入框默认状态下有个仿‘placeholder’的默认文本提示信息,2.文本框输入状态下其高度会随文本内容自动撑开. 方案选择:1.使用<texta ...

  8. 使用contenteditable=true的div模拟textarea(vue2.0中使用,带placeholder且高度自动撑开)

    子组件: <template> <div class="item-address"> <span v-show="!hasAddress&q ...

  9. contenteditable="true"让div可编辑

    今天才知道有这个属性,真是out了. 不过以前一直没做编辑器有关的,毕竟开源的很多. 现在觉得开源的也不是这么好用,自己写写简单的吧 用了 <div class="content-bo ...

随机推荐

  1. 并发编程之 Semaphore 源码分析

    前言 并发 JUC 包提供了很多工具类,比如之前说的 CountDownLatch,CyclicBarrier ,今天说说这个 Semaphore--信号量,关于他的使用请查看往期文章并发编程之 线程 ...

  2. .5-浅析express源码之Router模块(1)-默认中间件

    模块application已经完结,开始讲Router路由部分. 切入口仍然在application模块中,方法就是那个随处可见的lazyrouter. 基本上除了初始化init方法,其余的app.u ...

  3. b'driver "overlay" failed to remove root filesystem 的解决方法

    1.docker-compose启的nexus仓库意外dead   公司的maven私服nexus是通过docker-compose启动的,不知道什么原因意外死掉了.再次启动的时候报错: [root@ ...

  4. (译) 在AngularJS中使用的表单验证功能【转】

    验证功能是AngularJS里面最酷炫的功能之一,它可以让你写出一个具有良好用户体验的Web应用. 在AngularJS中,有许多用于验证的指令.我们将先学习几个最流行的内置指令,然后再创建一个自定义 ...

  5. [日常] Go语言圣经--复数,布尔值,字符串习题

    go语言圣经-复数 1.我们把形如a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位.两种精度的复数类型:complex64和complex128,分别对应float3 ...

  6. WebServer搭建过程

    第一步,新建Web网站项目 第二步: 右击项目解决方案,选择添加新建项 选择Web服务项 第三步,在asmx方法中将Hello World注释掉,然后编写自己的方法,这里根据项目的不同可以做不同的处理 ...

  7. POJ1651(KB-E)

    Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K  Total Submissions: 10034 Accepted: 62 ...

  8. 【代码笔记】iOS-performSelector

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. se ...

  9. event.stopPropagation与event.preventDefault的区别

    1.event.stopPropagation 停止事件的传播,阻止它被分配到其它Dom节点.但是不能阻止同一Dom节点上的其它事件句柄被调用. 注:不同Dom节点的事件必须是一致的.如父节点和子节点 ...

  10. Linux sudo 命令使用简介

    Linux sudo 命令使用简介 by:授客 QQ:1033553122 基本语法: $ sudo [-u username] [command] -u:将身份变成username的身份 #编辑/e ...