重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

javascript复制,javascript复制对象

JS怎么复制东西?

function copyText(btn, ele){

十余年的渑池网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整渑池建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“渑池网站设计”,“渑池网站推广”以来,每个客户项目都认真落实执行。

btn.addEventListener('click', () = {

navigator.clipboard.writeText(ele.innerText ? ele.innerText : ele.value);

}

);

}

直接调用即可

JS中实现深度拷贝,复制一个对象

在JS中拷贝、复制一个对象的方式有多种,我常用的一般是 Object.assign({},sourceObj)。

Object.assign()因为 Object.assign()拷贝的是属性值。假如源对象的属性值是一个对象的引用,那么它也只指向那个引用。如果合并的对象是多层嵌套对象那就属于浅拷贝了,修改内层对象的值还是会影响原对象。

要想实现深度复制可以使用JSON方式。

写法如下:

它的原理是把JS对象转换为JSON字符串,再由JSON字符串转换为JS对象,这样新对象的指针就不会指向原对象的指针了。但这种也有副作用的,有一下几点副作用:

1、有属性包含时间对象,拷贝后就是字符串的形式。

2、有函数或undefined,拷贝后会丢失。

3、有RegExp和Error对象,拷贝后变为空对象。

4、存在循环引用的情况,没法正确拷贝。

5、内层对象是构造函数生成的,会丢失constructor。

6、属性值为NaN、Infinity,拷贝后变为null。

虽然有些副作用,但大多情况还是符合要求可以使用。

如何利用JS实现复制/粘贴功能

1、最基本的复制

Java代码

script language="JavaScript"

function readTxt()

{

alert(window.clipboardData.getData("text"));

}

function setTxt()

{

var t=document.getElementById("txt");

t.select();

window.clipboardData.setData('text',t.createTextRange().text);

}

/script

input name="txt" value="测试"

input type="button" value="复制" onclick="setTxt()"

input type="button" value="读取" onclick="readTxt()"

2、扩展复制:复制表格

Java代码

INPUT TYPE="button" value="选中测试表格" onclick="CopyTable()"

测试

TABLE border="1" id="oTable"

TR

TD测试表格/TD

TD测试表格/TD

/TR

TR

TD测试表格/TD

TD测试表格/TD

/TR

/TABLE文字

SCRIPT LANGUAGE="JavaScript"

!--

function CopyTable()

{

var txt = document.body.createTextRange();

txt.moveToElementText(document.getElementById('oTable'));

txt.select();

}

//--

/SCRIPT

、兼容IE,firefox等浏览器的复制

Java代码

script

function copyToClipboard(txt) {

if(window.clipboardData) {

window.clipboardData.clearData();

window.clipboardData.setData("Text", txt);

} else if(navigator.userAgent.indexOf("Opera") != -1) {

window.location = txt;

} else if (window.netscape) {

try {

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

} catch (e) {

alert("被浏览器拒绝!\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");

}

var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);

if (!clip)

return;

var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);

if (!trans)

return;

trans.addDataFlavor('text/unicode');

var str = new Object();

var len = new Object();

var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);

var copytext = txt;

str.data = copytext;

trans.setTransferData("text/unicode",str,copytext.length*2);

var clipid = Components.interfaces.nsIClipboard;

if (!clip)

return false;

clip.setData(trans,null,clipid.kGlobalClipboard);

}

}

/script

button onclick="copyToClipboard('你好!');"复制文本“你好!”/button

textarea id="test"/textarea

js 复制文字功能

功能 :点击按钮,复制值。

实现方法 :通过原生js 的方法 document.execCommand('copy')

巨坑 :document.execCommand(‘copy’)不生效

原因 :

1.input框不能有disabled属性

2.根据第一条扩展,input的width || height 不能为0;

3.input框不能有hidden、display:none属性

解决方案 :在不改变原需求的情况下,新增一个input框,然后设置 opacity:0; 实现不可见, position:absolute; 脱离文档流解决占空间的问题

语法:

document.execCommand(aCommandName,aShowDefaultUI,aValueArgument),返回值Boolean 如果返回false 则表示还不能支持;

参数说明:

1.aCommandName

命令的名称:常用的为"copy","cut"等;

注:“copy” 拷贝当前选中内容到剪贴板

“cut”  剪贴当前选中的文字并复制到剪贴板

2.aShowDefaultUI

是否展示用户界面,一般为 false;

3.aValueArgument

  默认为null,

示例

!-- html --

  !-- 点击复制输入框value值 --

    input type="text" id="copyVal" value="被复制的内容" /

    !-- 点击复制div标签的innerHTML --

    div id="copyInner"被复制的内容/div

    button onclick="myCopy"点击复制/button

// 方法一:点击按钮复制文本框内容

function myCopy(){

    var copyVal = document.getElementById('copyVal');

    copyVal.select();

    document.execCommand('copy');

}

// 方法二:点击按钮复制div标签内容

function myCopy(){

    const range = document.createRange();

    range.selectNode(document.getElementById('copyInner'));

    const selection = window.getSelection();

    if(selection.rangeCount 0) selection.removeAllRanges();

    selection.addRange(range);

    document.execCommand('copy');

}


本文题目:javascript复制,javascript复制对象
分享URL:http://cqcxhl.cn/article/dsccppd.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP