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-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
.kcont {
border: 1px solid #ccc;
background-color: #D2E9FF;
position:relative;
height:300px;
font-size:16px;
}
.area { width:99%; background:none; border:none; display:block; font-size:16px;}
</style>
</head> <body>
<div class="kcont" id="cont">
<p>
复制我!!!!!!!!</p>
function trim(str){ <br />
str = str.replace(/^(\s|\u00A0)+/,''); <br />
for(var i=str.length-1; i>=0; i--){ <br />
if(/\S/.test(str.charAt(i))){ <br />
str = str.substring(0, i+1); <br />
break; <br />
} <br />
} <br />
return str; <br />
}
</p>
<form id="form"><input type="submit" name="button" id="button" value="复制" /></form>
</div> <script>
var but = document.getElementById("button");
but.addEventListener("click",copy); Selection = function(input){
this.isTA = (this.input = input).nodeName.toLowerCase() == "textarea";
};
with({o: Selection.prototype}){
o.setCaret = function(start, end){
var o = this.input;
if(Selection.isStandard)
o.setSelectionRange(start, end);
else if(Selection.isSupported){
var t = this.input.createTextRange();
end -= start + o.value.slice(start + 1, end).split("\n").length - 1;
start -= o.value.slice(0, start).split("\n").length - 1;
t.move("character", start), t.moveEnd("character", end), t.select();
}
};
o.getCaret = function(){
var o = this.input, d = document;
if(Selection.isStandard)
return {start: o.selectionStart, end: o.selectionEnd};
else if(Selection.isSupported){
var s = (this.input.focus(), d.selection.createRange()), r, start, end, value;
if(s.parentElement() != o)
return {start: 0, end: 0};
if(this.isTA ? (r = s.duplicate()).moveToElementText(o) : r = o.createTextRange(), !this.isTA)
return r.setEndPoint("EndToStart", s), {start: r.text.length, end: r.text.length + s.text.length};
for(var $ = "[###]"; (value = o.value).indexOf($) + 1; $ += $);
r.setEndPoint("StartToEnd", s), r.text = $ + r.text, end = o.value.indexOf($);
s.text = $, start = o.value.indexOf($);
if(d.execCommand && d.queryCommandSupported("Undo"))
for(r = 3; --r; d.execCommand("Undo"));
return o.value = value, this.setCaret(start, end), {start: start, end: end};
}
return {start: 0, end: 0};
};
o.getText = function(){
var o = this.getCaret();
return this.input.value.slice(o.start, o.end);
};
o.setText = function(text){
var o = this.getCaret(), i = this.input, s = i.value;
i.value = s.slice(0, o.start) + text + s.slice(o.end);
this.setCaret(o.start += text.length, o.start);
};
new function(){
var d = document, o = d.createElement("input"), s = Selection;
s.isStandard = "selectionStart" in o;
s.isSupported = s.isStandard || (o = d.selection) && !!o.createRange();
};
} function copy (){ var cont = document.getElementById("cont");
var ele = document.createElement("textarea");
ele.style.height = cont.offsetHeight+"px"
ele.className = "area"; ele.id = "area";
ele.innerHTML = cont.innerText ;
cont.innerHTML = "";
cont.appendChild(ele); var le = document.getElementById("area");
var selection = new Selection(le);
selection.setCaret(0,le.value.length);
le.focus(); }
</script>
</body>
</html>
js 之 复制一段代码的更多相关文章
- eclipse快捷键,移动和复制一段代码
移动代码:alt+上或下箭头 复制加移动代码:ctrl + alt + 上或下箭头
- JS实现复制网页内容自动加入版权内容代码和原文链接
JS实现复制网页内容自动加入版权内容代码和原文链接 实现代码:在body内放入如下代码即可: <script type="text/javascript"> var S ...
- 由一段代码谈前端js优化和编码规范(一) 分类: JavaScript 2015-03-21 12:43 668人阅读 评论(1) 收藏
这段代码是撸主刚毕业那会写的,主要是实现一个左侧的导航条的折叠功能.当时实现的比较简陋,每次在导航条增加新的项目的时候,都要手动去修改js代码中写死的索引...确实是比较恼火的,后来就修改了一下,能够 ...
- jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?
jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...
- 127个常用的JS代码片段,每段代码花30秒就能看懂(上)
127个常用的JS代码片段,每段代码花30秒就能看懂(上) JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript.” FreeCode ...
- js中闭包来实现bind函数的一段代码的分析
今天研究了一下bind函数,发现apply和call还可以有这样的妙用,顺便巩固复习了闭包. var first_object = { num: 42 }; var second_object = { ...
- JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。
反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足. while语句结构: while(判断条件) { 循环语句 } 使用w ...
- JS 单击复制,复制后变为已复制
这段代码是在新浪网站上找到的.先放出CSS代码: .focus a.arrow,.card_con4 li i,.cm1_menu_wrap a.cm1_menu_box,.cm1_img span, ...
- 禁止页面复制功能 js禁止复制 禁用页面右键菜单
<body oncontextmenu="return false">禁用网页右键菜单,但是仍然可以使用快捷键复制. js代码禁用复制功能: <script t ...
随机推荐
- MYSQL删除以数字开头的字段
例子: // 删除以0开头的字段 DELETE FROM `week_energy_copy` WHERE openid like '0%'; // 删除以数字开头的字段 DELETE FROM `w ...
- java jdbc使用配置文件连接数据库:
java jdbc使用配置文件连接数据库: 创建后缀名为:.properties的文件,文件内容包括,数据库驱动.连接的数据库地址.用户名.密码…… 以Mysql为例创建config.properti ...
- js遍历数组和遍历对象的区别
<script> //----------------for用来遍历数组对象-- var i,myArr = [1,2,3]; for (var i = 0; i < myArr.l ...
- poj 2484 A Funny Game(博弈)
A Funny Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4639 Accepted: 2855 Desc ...
- MIPI D-PHY 简写收集
Acronyms APPI Abstracted PHY-Protocol InterfaceBER Bit Error Rate 417 CILControl ...
- HDU 4432 Sum of divisors (进制模拟)
三个小函数 getdiv(); 求因子 getsum(); 求平方和 change(); 转换成该进制 #include <cstdio> #include ...
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
java线程存在以下几种状态: 1: 创建状态(New):线程被new出来,还未调用start 2: 就绪状态(Runnable):又称为可执行状态,调用线程的start方法后,线程处于就绪状态,,线 ...
- HP P2055d激光打印机PCL XL error的解决
近日,于客户处安装HP P2055d激光打印机(2009年11月份生产的机器),介绍下硬件环境:PC:Dell OptiPlex 360,另有一台富士通DPK 8600E票据打印机,P2055d通过U ...
- MapReduce输出格式
针对前面介绍的输入格式,MapReduce也有相应的输出格式.默认情况下只有一个 Reduce,输出只有一个文件,默认文件名为 part-r-00000,输出文件的个数与 Reduce 的个数一致. ...
- [转] 「指尖上的魔法」 - 谈谈 React Native 中的手势
http://gold.xitu.io/entry/55fa202960b28497519db23f React-Native是一款由Facebook开发并开源的框架,主要卖点是使用JavaScrip ...