2012-08-13 26 views
0

我試圖創建一個複製到剪貼板IE的JavaScript函數,但我的代碼是行不通的。我應該如何格式化我的參數並傳遞參數?HTML跨度id作爲JavaScript函數的參數

/*invisible storage*/ 
<textarea id="storageBox" STYLE="display:none;"> 
</textarea> 

<p id="abc">I WANT TO COPY THIS TEXT</p> 

<button onClick="Copy(abc);">Copy</button><br /> 

<script type="text/javascript"> 
function Copy(txt) { 
storageBox.innerText = txt.innerText; 
Copied = storageBox.createTextRange(); 
Copied.execCommand("RemoveFormat"); 
Copied.execCommand("Copy"); 
} 
</script> 

任何人都可以使用zclip寫這個或給我看一個類似的例子的主要業力!

+1

您的瀏覽器是否設置爲允許訪問剪貼板? – epascarello 2012-08-13 19:03:02

+0

當我在IE中打開頁面時,我允許執行腳本,是的。 – CptZpBrngn 2012-08-13 19:05:56

+0

其實你的腳本工作正常。只需檢查您的Internet選項以允許腳本使用剪貼板。 – Teemu 2012-08-13 19:16:27

回答

0

以下變化應該有所幫助:

... onclick="Copy('abc');"... 

storageBox.value = document.getElementById(txt).innerText 

我想。你是不是很具體在說什麼原因,你正在試圖劫持剪貼板什麼行不通,甚至對於(如哪些用戶有重要的東西嗎?)

+0

不幸的是,這是行不通的。這個問題存儲盒也是一個ID嗎?當我使用document.getElementById(「storageBox」)創建一個var時,當我單擊按鈕時它仍然沒有任何操作。我絕對同意這是一種糟糕的形式,非常想使用zclip,但我對js很陌生。 – CptZpBrngn 2012-08-13 19:12:33

+0

然後,我強烈建議您在提問之前先找到一本好書或在線教程。在這裏提出問題的一部分政策是,在尋求幫助之前,你必須做好功課。另外,如果您需要讀取或寫入textarea,則語法爲[textarea對象] .value,而不是innerText。這裏的其他答案也非常有效 - 也要考慮到它們。 – Art 2012-08-13 20:29:33

0

首先,你需要傳遞的參數作爲一個字符串:

<button onClick="Copy('abc');">Copy</button><br /> 

在你的功能,你需要從基於此ID的DOM元素(作爲一個字符串):

function Copy(txt) { 
    storageBox.innerText = document.getElementById(txt).innerText; 
    ... 
+0

這與Art建議的相同,不幸的是不起作用。有沒有什麼辦法讓我通過一個實用程序來運行代碼來提取特定的錯誤或警告? – CptZpBrngn 2012-08-13 19:13:45

+0

使用Firefox,加上Firebug插件。打開JS控制檯,你會看到錯誤。 – 2012-08-13 20:48:46

0

雖然我評論了你的腳本做工精細,有是在HTML修復的東西。如果您設置了display: none,則execCommand()無法複製該內容。所以你需要這樣做:

<textarea id="storageBox" style="width: 0px; height: 0px; border: 0px;"></textarea> 
+0

在正確更改參數後,這肯定會得到腳本的工作,但會創建像素大小的方形。謝謝你的信息。 – CptZpBrngn 2012-08-13 20:03:15

+0

@CptZpBrngn你可以絕對定位'textarea'並設置'top:-500px'。儘管其他答案指導您正確傳遞參數,但您的原始腳本也可以按原樣運行。在IE中,'id'創建一個引用元素的全局變量。 – Teemu 2012-08-14 04:26:21