Dane do schowka możesz skopiować za pomocą Clipboard API lub starszej alternatywy Document.execCommand() - zależy jakie przeglądarki wspierasz.
Kod:
var div = document.querySelector('.contactEmail'); div.addEventListener("click", function() { div.execCommand("copy", Boolean, "tekst"); });
Błąd:
copy.js:3 Uncaught TypeError: Cannot read property 'addEventListener' of null at copy.js:3
Na początku uporaj się z brakiem referencji <div>a. :) Upewnij się, że selector .contactEmail jest prawidłowy. Jeśli tak, to możliwe że podpinasz skrypt przed elementem w kodzie HTML (a skrypt powinieneś podpiąć po elemencie lub najlepiej przed zamykającym znacznikiem </body>).
Co do użycia execCommand, to nie jest to metoda należąca do zmiennej div ani też do jej prototypu - należy do obiektu document. Użycie drugiego i trzeciego parametru (Boolean i "tekst") w tym przypadku jest zbędne. Kopiowanie opiera się o zaznaczony tekst na stronie. Możesz to zrobić samemu (myszką/klawiaturą) i wtedy odpalić komendę document.execCommand('copy'), ale to na dłuższą metę jest mało automatyczne. :) Z pomocą przychodzi metoda selectAllChildren obiektu Selection, do której przekazujesz selector elementów do zaznaczenia.
Całość możesz zapisać w ten sposób:
<div id="exampleText">Testowy tekst do skopiowania.</div>
const elementToCopy = document.getElementById('exampleText'); window.getSelection().selectAllChildren(elementToCopy); document.execCommand('copy');
93,628 zapytań
142,551 odpowiedzi
323,052 komentarzy
63,134 pasjonatów
Top 15 użytkowników
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto polecana książka warta uwagi.Pełną listę książek znajdziesz tutaj