Ⅰ 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 復制文字功能
功能 :點擊按鈕,復制值。
實現方法 :通過原生js 的方法 document.execCommand('')
巨坑 :document.execCommand(『』)不生效
原因 :
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
命令的名稱:常用的為"","cut"等;
註:「」 拷貝當前選中內容到剪貼板
「cut」 剪貼當前選中的文字並復制到剪貼板
2.aShowDefaultUI
是否展示用戶界面,一般為 false;
3.aValueArgument
默認為null,
示例
<!-- html -->
<!-- 點擊復制輸入框value值 -->
<input type="text" id="Val" value="被復制的內容" />
<!-- 點擊復制div標簽的innerHTML -->
<div id="Inner">被復制的內容</div>
<button onclick="myCopy">點擊復制</button>
// 方法一:點擊按鈕復制文本框內容
function myCopy(){
var Val = document.getElementById('Val');
Val.select();
document.execCommand('');
}
// 方法二:點擊按鈕復制div標簽內容
function myCopy(){
const range = document.createRange();
range.selectNode(document.getElementById('Inner'));
const selection = window.getSelection();
if(selection.rangeCount > 0) selection.removeAllRanges();
selection.addRange(range);
document.execCommand('');
}
Ⅲ JS實現內容復制功能
復制是一個使用頻率特別高的操作,在網頁中,一般可以選中要復制的內容,使用快捷鍵 ctrl+c 將內容復制到剪貼板。除了使用系統提供的快捷方式復制網頁內容,我們還可以用JS實現復制,這得益於document的 execCommand('') 命令。
實現整個復制功能,需要以下三個步驟:
大部分HTML元素都有innerText和innerHTML兩個屬性,innerText屬性返迴文本內容,innerHTML屬性返回標簽元素。我們可以創建一個函數,用於獲取需要返回的內容:
上面的selectText函數接收一個DOM元素,返回DOM元素的innerText屬性值。
我們可以通過表單元素的select()方法選中內容,表單元素因為textarea限制少於input,所以推薦使用textarea。我們可以動態創建一個textarea元素,將textarea的value屬性值設置為上面的innerText屬性值,再執行textarea的select方法選中。
上面實現了選中,下面就可以實現復制功能了。
最後一步就可以用execCommand('')實現復制了,它可以復制瀏覽器中選中的文本,比如說上面被textarea選中的文本,復制之後記得移除textarea。
第二步和第三步可以優化一下,創建一個函數,函數參數設置為第一步需要復制的文本,返回值為復制的結果。
完整JS示例如下:
可以將上面的完整JS示例寫入一個JS文件,將JS文件引入HTML中,通過JS點擊事件來執行復制函數。
效果圖:
Ⅳ 手機版我的世界js怎麼復制大型建築
由於復制范圍是長方體,所以要復制的這棟建築必須是要在長方體內,這樣才能完整的復制到整棟建築,如圖
點擊後,等待屏幕出現以復制字樣就行了。然後選擇粘貼。
溫馨提示,建築大必須要等。等到它提示完成後才能粘貼。
Ⅳ 如何利用JS實現復制/粘貼功能
1、最基本的復制
代碼
<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 ToClipboard(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 text = txt;
str.data = text;
trans.setTransferData("text/unicode",str,text.length*2);
var clipid = Components.interfaces.nsIClipboard;
if (!clip)
return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
}
</script>
<button onclick="ToClipboard('你好!');">復制文本「你好!」</button>
<textarea id="test"></textarea>
Ⅵ 蘋果手機如何調用復制JS
純的js時沒有這樣的功能的(僅IE可以),而zeroclipboard是基於flash實現的,手機比如iOS,直接專不支持flash,android安裝flash的也很少。因屬此應考慮別的方案或者在手機端不做這個功能。
Ⅶ js 如何不通過點擊事件實現復制功能
js實現點擊後將文字或圖片復制到剪貼板的方法,代碼非常簡潔實用,具體功能代碼如下所示:
<table width="99%" border="0" cellpadding="0" cellspacing="0" class="firtable">
<tr>
<th width="100%" style="color: white;"><s:text name="詢單明細"></s:text></th>
</tr>
<tr>
<td align="center">
<textarea name="inquiryContact1" id="inquiryContact1" rows="15" cols="60" readonly="readonly"></textarea>
<div id="inquiryInfoDIV" style="display:none">
<s:property value="inquiryContact" escape="false"/>
</div>
<script> dojo.byId("inquiryContact1").innerText=dojo.byId("inquiryInfoDIV").innerText;
</script>
</td> </tr>
<tr>
<td align="center">
<input type="button" id="button" name="button" value="復制" onclick="Contact()"/>
</td> </tr> </table>
<script type="text/javascript">
var i = 0 ;
function Contact(){
var contat = document.getElementById("inquiryContact1").value;
window.clipboardData.setData('text', contat);
if(window.clipboardData.getData('text')==''){
if(i==1){
alert("復制失敗,請手動Ctrl+C快捷鍵復制!");
}else{
alert("復制失敗,請重新復制!");
i = 1;
}
}else{
alert("內容已經復制到剪貼板!");
}
}
</script>
Ⅷ JavaScript如何點擊實現復制文字到剪切板呢
可以使用clipboard插件解決這個問題。
github里直接搜索clipboard就可以找到了。
這里的.btn是元素的class屬性,可以使用任意id或者class以及元素節點名稱來實例化插件。
默認會為元素綁定click事件,點擊的時候會觸發。
data-clipboard-target參數指定被復制內容的元素。
如上例,點擊按鈕後會將input的值「被復制的內容」幾個字復制到剪切板中。
更多使用方法可以自行github查詢。
Ⅸ JS如何實現手機復制功能
JS是無法讀取剪切板數據的,也就是說JS無法實現這個功能。
實現這樣的功能需要藉助一falsh插件來完成,可以找下falsh網頁復制插件,這些插件都會有相關的代碼,可以直接使用。
Ⅹ js實現復制按鈕
該方法允許運行命令來操縱可編輯內容區域
這里不得碰皮消不說select()方法,這個方法是輸入框獨有的,即<笑知input>和<textarea>,它可以選中輸入框中的值,使輸入框握型處於一個聚焦的狀態。
步驟:
1、獲取輸入框
2、調用select()方法獲取裡面的值
3、使用瀏覽器提供的方法將其復制
input框實現
p標簽實現