<!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&gt;=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 之 复制一段代码的更多相关文章

  1. eclipse快捷键,移动和复制一段代码

    移动代码:alt+上或下箭头 复制加移动代码:ctrl + alt + 上或下箭头

  2. JS实现复制网页内容自动加入版权内容代码和原文链接

    JS实现复制网页内容自动加入版权内容代码和原文链接 实现代码:在body内放入如下代码即可: <script type="text/javascript"> var S ...

  3. 由一段代码谈前端js优化和编码规范(一) 分类: JavaScript 2015-03-21 12:43 668人阅读 评论(1) 收藏

    这段代码是撸主刚毕业那会写的,主要是实现一个左侧的导航条的折叠功能.当时实现的比较简陋,每次在导航条增加新的项目的时候,都要手动去修改js代码中写死的索引...确实是比较恼火的,后来就修改了一下,能够 ...

  4. jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行?

    jsp页面:js方法里嵌套java代码(是操作数据库的),如果这个js 方法没被调用,当jsp页面被解析的时候,不管这个js方法有没有被调用这段java代码都会被执行? 因为在解析时最新解析的就是JA ...

  5. 127个常用的JS代码片段,每段代码花30秒就能看懂(上)

    127个常用的JS代码片段,每段代码花30秒就能看懂(上) JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript.” FreeCode ...

  6. js中闭包来实现bind函数的一段代码的分析

    今天研究了一下bind函数,发现apply和call还可以有这样的妙用,顺便巩固复习了闭包. var first_object = { num: 42 }; var second_object = { ...

  7. JS流程控制语句 反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足。

    反反复复(while循环) 和for循环有相同功能的还有while循环, while循环重复执行一段代码,直到某个条件不再满足. while语句结构: while(判断条件) { 循环语句 } 使用w ...

  8. JS 单击复制,复制后变为已复制

    这段代码是在新浪网站上找到的.先放出CSS代码: .focus a.arrow,.card_con4 li i,.cm1_menu_wrap a.cm1_menu_box,.cm1_img span, ...

  9. 禁止页面复制功能 js禁止复制 禁用页面右键菜单

    <body oncontextmenu="return false">禁用网页右键菜单,但是仍然可以使用快捷键复制. js代码禁用复制功能: <script  t ...

随机推荐

  1. Spark(Hive) SQL数据类型使用详解(Python)

    Spark SQL使用时需要有若干“表”的存在,这些“表”可以来自于Hive,也可以来自“临时表”.如果“表”来自于Hive,它的模式(列名.列类型等)在创建时已经确定,一般情况下我们直接通过Spar ...

  2. unity3d shader之实时室外光线散射(大气散射)渲染

    散射需要:吸收,内散射,外散射分为瑞利散射Rayleigh Scattering和米氏散射 Mie Scattering  后面会详细讲解 大气中散射由多种原因产生,微粒,尘埃,水蒸气等等 阳光由于散 ...

  3. ERROR: The node /hbase is not in ZooKeeper. It should have been written by the master. Check the value configured in 'zookeeper.znode.parent'. There could be a mismatch with the one configured in the

    hbase  shell下list命令出错. [hadoop@djt002 hbase]$ hbase shell 2016-07-20 19:37:12,522 INFO  [main] Confi ...

  4. reloadData should be in main thread

    reloadData should be called in main thread, so if you call it in work thread, you should call it as ...

  5. 月見(つきみ) 夕(ゆう) SumiHui.墨虺

    造影早迎中秋,自己通过word设计的

  6. ecshop格式化商品价格

    <?php /** * 格式化商品价格 * * @access public * @param float $price 商品价格 * @return string */ function pr ...

  7. winform 解决界面闪动、提升加载速度 分类: WinForm 2015-02-03 16:34 161人阅读 评论(0) 收藏

    说明: 从一个技术交流群里获得,经验证效果不错. //作用 加快界面加载 protected override CreateParams CreateParams          {         ...

  8. 开发期间的GWT设置---加快编译速度

    随着项目功能的完善,GWT模块(Module)越来越多,当要以web模式编译给测试组使用时,编译的总时间越来越多,我的机器编译完8个模块,需要10分钟左右. 抽空研究了一下GWT的编译参数和GWT编译 ...

  9. Android中的FrameLayout帧布局

    帧布局由FrameLayout所代表,FrameLayout直接继承了ViewGoup组件. 帧布局容器为每一个增加当中的组件创建一个空白的区域(称为一个帧),每一个子组件占领一帧,这些帧都会依据gr ...

  10. java中获取系统属性以及环境变量

    java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户 ...