2008-11-25 155 views
5

我想寫一個JavaScript腳本添加到添加按鈕後的按鈕的greasemonkey。該按鈕的onClick應該將父母元素文本複製到鍵盤。我看到過很多這樣的副本已選定文本複製到剪貼板像這樣的例子:Greasemonkey JavaScript複製到剪貼板按鈕

<SCRIPT LANGUAGE="JavaScript"> 
    <!-- Begin 
    function copyit(theField) { 
    var selectedText = document.selection; 
    if (selectedText.type == 'Text') { 
    var newRange = selectedText.createRange(); 
    theField.focus(); 
    theField.value = newRange.text; 
    } else { 
    alert('Alert: Select The text in the textarea then click on this button'); 
    } 
    } 
    // End --> 
    </script> 
    <input onclick="copyit(this.form.text_select)" type="button" value="Click Here to Copy the Highlighted Text" name="copy_button"> 

找到here

我也發現你可以在輸入元素中選擇文本。我嘗試將兩種技術以及許多其他方法結合起來,但還沒有可行的解決方案。我甚至不知道爲什麼上面的代碼複製到剪貼板。有沒有人有解決這個問題?

+0

另請注意:https://developer.mozilla.org/en/Using_the_Clipboard – javamonkey79 2008-12-25 02:40:29

回答

5

如果你花時間來閱讀完整文章,作者指出這不適用於Firefox的工作...
其實,我覺得它甚至不工作對於IE,因爲它沒有任何與剪貼板相關的東西!

有一種使用Flash的技術,因爲默認情況下,出於安全原因,Firefox禁止剪貼板訪問。
否則,傳統的方式做副本:

var tc = textToCopy.replace(/\n\n/g, '\n'); 
if (window.clipboardData) // IE 
{ 
    window.clipboardData.setData("Text", tc); 
} 
else 
{ 
    unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
    const clipboardHelper = Components.classes 
     ["@mozilla.org/widget/clipboardhelper;1"]. 
     getService(Components.interfaces.nsIClipboardHelper); 
    clipboardHelper.copyString(tc); 
} 

使副本(給定站點)之後。

+5

我確實花時間閱讀整篇文章 - 我只是錯過了「筆記」;沒有理由變得敏捷,我們都會犯錯誤。儘管如此,您的解決方案是正確的方式,謝謝。 – javamonkey79 2008-12-25 02:39:08

1

你確定你的例子有效嗎?它不在我的瀏覽器中。但是看看下面的頁面:http://www.jeffothy.com/weblog/clipboard-copy/

+0

它適用於FF 3.0.4,但您必須選擇文本才能使複製按鈕生效。我看過那篇博文,它依賴於使用flash來複制,這對我正在嘗試做的事不起作用。謝謝。 :) – javamonkey79 2008-11-27 04:36:50