选中文字弹出提示

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>Document</title>
    <style>
        *{
            padding:0;
            margin:0;
        }
        #demo{
            width:400px;
            height:400px;
            margin:50px;
        }
        #tip{
            width:50px;
            height:50px;
            background-color: pink;
            position:absolute;
            top:0;
            left:0;
            display:none;
        }
    </style>
</head>
<body>
<div id="tip"></div>
<div id="demo">
    人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利
    人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利
    人有没有自甘堕落的权利人有没有自人有没有自甘堕落的权利甘堕落的权利人有没有自甘堕落人有没有自甘堕落的权利的权利
    人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利人有没有自甘堕落的权利
</div>
</body>
</html>
<script>
    function $id(id){return document.getElementById(id);}
    $id("demo").οnmοuseup=function (event) {
        var event=event||window.event;
        var x=event.clientX;
        var y=event.clientY;

        var txt; //用于存储选中的文字
        if(window.getSelection)
        {
            txt=window.getSelection().toString(); //获得用户选择内容(标准浏览器),转成字符串
        }
        else{
            txt=document.selection.createRange().text;//ie的写法获得用户选择内容
        }
        if(txt) //如果有选中的内容,所有的字符串都为真,""是空
        {
            show(x,y,txt);
        }
    }

    function show(mousex,mousey,content)
    {
       setTimeout(function(){  //选中文字之后,延迟几秒显示提示框,用setTimeout而不是setInterner,提示框只显示一次
           $id("tip").style.display="block";
           $id("tip").style.left=mousex+"px";
           $id("tip").style.top=mousey+"px";
           $id("tip").innerHTML=content;
       },100)
    }

    //点击空白处隐藏
    document.οnmοusedοwn=function (event) { //为了防止冒泡,用onmousedown不是onclick,
        var event = event || window.event;
        var targetId = event.target ? event.target.id : event.srcElement.id;
        if (targetId != "tip") {
            $id("tip").style.display = "none";
        }
    }

</script>

  

  关键代码:

       1,tip的定位

#tip{
   width:50px;
   height:50px;
   background-color:pink;
   position:absolute;
   top:0;
   left:0;
   display:none;       
}  

  2,, 鼠标移动到文字内容的上方,或获取到鼠标停止处的clientX, clientY 坐标,然后如果有选中的文字,就将该文字显示在隐藏的tip提示框里;

    选中文字之后,延迟几秒显示提示框,用setTimeout而不是setInterval , 因为提示框只显示一次。

demo.οnmοuseup=funciton(event){
      var event=event||window.event;
      var x=event.clientX;
      var y=event.clientY;

      va txt;
      if(window.getSelection)
     {
         txt=window.getSelection().toString();
     }
     else{
        txt=document.selection.createRange().text;
     }
     if(txt)
    {
       show(x,y ,txt)0;
    }
}

function show(mousex, mousey, content)
{ 
      setTimeout(function(){
        tip.style.display="block";
        tip.style.left=mousex+"px";
        tip.style.top=mousey+"px";
        tip.innerHTML=content;
      },100)
}

3,点击空白处,tip提示框隐藏

  为了防止冒泡,用onmousedown, 而不是 onclick

document.οnmοusedοwn=funciton(event)
{
   var event=event||window.event;
   var targetld = event.target ? event.taraget.id  :  event. srcElement.id; 
   if(targetId!="tip")
   {
       tip.style.display="none";
   }
}

 

转载于:https://www.cnblogs.com/shanlu0000/p/11256652.html

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值