2008-11-25 13 views
5

Próbuję napisać skrypt JavaScript, który doda się do greasemonkey, który dodaje przycisk po elemencie. Przycisk onClick dla tego przycisku powinien skopiować tekst elementu nadrzędnego na klawiaturę. Widziałem wiele przykładów, że kopia już zaznaczony tekst do schowka, takich jak ten:Przycisk Greasemonkey JavaScript Copy to Clipboard

<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"> 

Znaleziony here.

Odkryłem również, że możesz wybrać tekst w elementach wejściowych. Próbowałem połączyć obydwie techniki, a także wiele innych bez realnego rozwiązania. Nie jestem nawet pewien, dlaczego powyższy kod kopiuje do schowka. Czy ktoś ma rozwiązanie tego?

+0

Uwaga: https://developer.mozilla.org/en/Using_the_Clipboard – javamonkey79

Odpowiedz

5

Jeśli miała czasu, aby przeczytać cały artykuł, stany autorem To nie działa w Firefoksie ...
Właściwie myślę, że to nawet nie działa dla IE, ponieważ nie ma nic wspólnego ze schowkiem!

Istnieje technika wykorzystująca Flash, ponieważ domyślnie Firefox blokuje dostęp do schowka ze względów bezpieczeństwa.
Inaczej, klasyczny sposób, aby zrobić kopię brzmi:

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); 
} 

po włączeniu kopię (na danym miejscu).

+5

Poświęciłem trochę czasu na przeczytanie całego artykułu - właśnie przegapiłem "notatkę"; nie ma powodu do drażliwości, wszyscy popełniamy błędy. Niemniej jednak, twoje rozwiązanie jest poprawne, dzięki. – javamonkey79

1

Czy jesteś pewien, że twój przykład działa? Nie działa w mojej przeglądarce. Ale spójrz na poniższej stronie: http://www.jeffothy.com/weblog/clipboard-copy/

+0

Działa w FF 3.0.4, ale musisz wybrać tekst, aby przycisk kopiowania działał. Widziałem ten post na blogu i polega on na używaniu Flasha do kopiowania, który nie zadziała dla tego, co próbuję zrobić. Dziękuję jednak. :) – javamonkey79