选中文字之后显示其他层

选中文字这个其实不难,主要还是兼容性的问题

在IE和OPERA下用document.selection

在FF、safari、chrome下就用window.getSelection()这个方法,不过这方法返回的是对象,如果要用的话,就要转换为字符串

先结构部分:


<p id="p1" style ="width:300px">
我们终究会死。所以我们的人生目标不该是长命百岁,而应该做点自己想做的。
流转的时光,照一脸沧桑。来不及遗忘,来不及细数。眉毛这样短,思念那么长。爱情里只有心甘情愿做傻瓜的人,没有真正的傻瓜
</p>
<div id="share" style="position:absolute;width:20px;height:20px;background:red;"></div>

div 必须是绝对定位,div中可以放入分享的图标,这里先用红色底色标记下

首先,先封装一个兼容性函数selectText()


    //selectText方法返回选中的文字,直接调用
function selectText(){
//IE、opera下:document.selection
//ff、safari、chrome:getSelection(),该方法返回的是对象
if(document.selection){
return document.selection.createRange().text;
}else{
return window.getSelection().toString();
};
}

然后是封装一个显示分享层的showShare()


    function showShare(oTarget,oShowDiv){
oTarget.onmouseup = function(e){
var e = e || window.event;
var left= e.clientX;
var top = e.clientY;
if(selectText().length > 10 ){
//ie下要延时,不然会影响选择
setTimeout(function(){
oShowDiv.style.display = "block";
oShowDiv.style.left = left + "px";
oShowDiv.style.top = top + "px";
},50);
e.cancleBubble = true;
};
};

//点击页面其它地方,隐藏分享层
document.onclick = function(){
oShowDiv.style.display = "none";
}
};

现在可以根据实际的机构来调用函数了


    var oP = document.getElementById("p1");
var oShare = document.getElementById("share");
showShare(oP,oShare );

主要的要点有:兼容性问题,取消冒泡,定时器解决IE选择的BUG

时间: 2024-07-30 12:56:47

选中文字之后显示其他层的相关文章

html 富文本编辑器相关--输出选中文字和主动选择文字

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div class="app" contenteditable="true"> <span id="con

jquery css div (弹出)显示隐藏层

css代码段 .crm_tc_bg { width: 100%; height: 100%; position: fixed; display: block; top: 0; left: 0; background: #000; filter: apha(opacity=50); -moz-opacity: 0.5; opacity: 0.5; z-index: 1000; } .crm_tc_box { width: 300px; min-height: 200px; max-height:

CSS3特殊伪类::selection改变页面选中文字的样式

一般在网页上面,选中文字的时候,文字的样式是会改变的,当然,样式也都是千篇一律的浏览器的默认样式,蓝底白字,偶然看到有些网页上面当文字选中的时候会有不一样的样式,当时就很是好奇,后来才慢慢发现是css的一个伪类::selection ::selection是一个CSS3选择器(这也告诉这我们CSS3必须要去熟悉,这玩意确实可以弄出很多意想不到的好效果.) 兼容性:IE9+,Chrome,Opera,Safari,Firefox…(也可以去查看)caniuse.com#search=::selec

让TextView里面的文字逐个显示的动画效果实现

最近使用TextView时想要实现里面的文字逐个显示的动画效果,就如同打字一样. 主要实现思想:新建一个TextView的派生类,先将要逐个显示的字符串保存变量 mOriginalStr 中,然后启动新线程,每隔一段时间使用 Handler 类对象的sendEmptyMessage(int what) 方法发送消息,让 Handler 对象将mOriginal中的字符串逐个添加到TextView中进行显示. 代码实现如下: 1 /** 2 * Created by Haoye on 2016/1

如何让div中的文字只显示一行,多余的文字隐藏并加上省略号(超链接形式)

写页面的时候遇到了一个小小的问题,如何让div中一行超链接文字只显示一行,多余的文字隐藏并加上省略号,悬浮时隐藏的文字显示出来?解决问题时发现了css3的一个新标签  text-overflow  ,其属性规定当文本溢出包含元素时发生的事情.语法如下: text-overflow: clip|ellipsis|string; 代码如下: <!DOCTYPE html><html><head><meta http-equiv="Content-Type&q

自定义绘制android EditText的背景,定义EditText文字的显示样式

EditText可以通过layer-list来绘制背景: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" //框为矩形 > &l

用js onselectstart事件鼠标禁止选中文字

IE&&Chrome中适用此方法 document.onselectstart=function(){return false;} onselectstart是防止内容被选中默认状态是true <body onselectstart=return(event.srcElement.type=='text')> 选不中 <input type="text" name="" value="来选吧"> </

错误记录seterror的文字不显示

今天开发时遇到个小问题,view.seterror的文字由于和theme重叠而无法显示,以前就遇到过,不过想换种方法. 有人说在style里面加<item name="android:textColorPrimaryInverse">@android:color/primary_text_light</item> <style name="AppBaseTheme" parent="@android:style/Theme.L

js显示隐藏层

<!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"> <head> <meta http-equiv="Content-