Ritim İstanbul A5 Blok No:46, D:112, 34846 Maltepe/İstanbul

Kod parçacıklarına kopyalama özelliği kazandırmak için JavaScript kodu

Web sitelerinde yayınlanan kod parçacıklarını paylaşmak veya başkalarıyla iletişim kurmak sıkça gerçekleştirilen bir iştir. Ancak, bazen bu kodları kopyalamak ve yapıştırmak zorlayıcı olabilir. İşte bu noktada, kod parçacıklarını kopyalamayı kolaylaştırmak için bir JavaScript aracı kullanabilirsiniz. Bu araç, her <code> elementi için bir “Kopyala” düğmesi oluşturur ve tıklanarak kodları panoya kopyalamanızı sağlar.

Kullanıcı deneyimini artırmak için her geçen gün yeni yaklaşım tarzları ortaya çıkıyor. Günümüzde websitelerinde çoğunlukla kodlar paylaşılıyor, ancak kullanıcılar bu kodları kopyalamak için imleçle seçmek ve Ctrl + C yapmak zorunda kalıyor. Bunun yerine JavaScript ile dinamik olarak bir düğmesi oluşturmak ve seçili bir HTML elementinin içerisindeki kodları kopyalamak aslında gayet basit. Şimdi, paylaştığımız kodlara böyle bir özelliğin nasıl kazandırıldığına göz atacağız.

- ADT Çözümleri -
Yönetilen Hizmetler Görseli
Advanced Dynamics Teknoloji'de işletmeler için dış kaynaktan hizmet modeliyle Yönetilen Hizmetler çözümleri sunuyoruz.

Yaklaşım tarzı

Döküman içerisinde bazen HTML elementler, CSS özellikler veya JavaScript komutlarını belirtmek için de <code> elementini kullanabiliriz. Eğer <code> elementini seçerek bu elementlerin olduğuı her yere JavaScript ile dinamik bir düğme oluşturmaya kalksaydık, o zaman HTML belge içerisinde büyük bir karmaşa yaşanabilirdi. Bunun için biz, kodumuza bir ‘sınıf’ atayacağız ve yalnızca seçtiğimiz bu sınıfın içerisindeki <code> elementlerine düğme oluşturacağız. Bu düğmeye tıklandığında, son kullanıcı, paylaşılan kodu kopyalama imkanı elde edecek.

Paylaştığımız kod, bir <pre> elementi içerisinde yer aldığı için öncelikle bu elementi seçmemiz, daha sonra ‘sınıf’ seçmemiz gerekecek. Sınıfı seçtikten sonra ise bir boşluk bırakacağız ve HTML elementimizi, yani <code> elementini seçeceğiz.

Nasıl Çalışır?

Bu JavaScript işlevselliği, sayfa yüklendiğinde <code> elementlerini tespit eder ve her biri için bir “Kopyala” düğmesi oluşturur. Bu düğmeler tıklandığında, ilgili kod parçacığı panoya kopyalanır ve kullanıcıya “Kopyalandı” mesajı gösterilir.

Kod Örneği

Aşağıda, bu işlevselliği gerçekleştiren JavaScript kodunu bulabilirsiniz:


// Her  elementi için bir düğme oluşturan fonksiyon
function createCopyButtons() {
    // Sadece "vb-code" sınıfına sahip 
 elementleri içindeki  elementlerini seç
    let codeElements = document.querySelectorAll('pre.adt-code code');

    // Her biri için döngüye gir
    for (let codeElement of codeElements) {
        // Bir id belirle
        let id = 'code-' + Math.random().toString(36).substr(2, 9);
        //  elementine id'yi ata
        codeElement.id = id;

        // Bir düğme oluştur
        let button = document.createElement('button');
        // Düğmeye "Kopyala" metnini ekle
        button.textContent = 'Kopyala';

        // Düğmeye tıklandığında copyToClipboard fonksiyonunu çağır
        button.addEventListener('click', function () {
            copyToClipboard(id);
        });

        // Butonu  elementinin yanına ekle
        codeElement.parentNode.insertBefore(button, codeElement.nextSibling);
    }
}

// Belirtilen id'li  elementinin içeriğini kopyalayan fonksiyon
function copyToClipboard(id) {
    //  elementini seç
    let codeElement = document.getElementById(id);
    // Kopyalanacak metni al
    let textToCopy = codeElement.textContent;

    // Geçici bir input oluştur
    let input = document.createElement('input');
    // Inputun değerine metni ata
    input.value = textToCopy;

    // Inputu sayfaya ekle
    document.body.appendChild(input);
    // Inputun içeriğini seç
    input.select();

    // Kopyala komutunu çalıştır
    document.execCommand('copy');

    // Inputu sayfadan kaldır
    document.body.removeChild(input);

    // showCopyAlert fonksiyonunu çağır
    showCopyAlert(id);
}

// Kopyalama işleminden sonra uyarı mesajı gösteren fonksiyon
function showCopyAlert(id) {
    //  elementini seç
    let codeElement = document.getElementById(id);
    // Bir span oluştur
    let span = document.createElement('span');

    // Spana "Kopyalandı" metnini ekle
    span.textContent = 'Kopyalandı';
    // Spana bir stil uygula
    span.style.color = 'green';
    span.style.fontWeight = 'bold';
    span.style.marginLeft = '10px';

    // Spanı  elementinin yanına ekle
    codeElement.parentNode.insertBefore(span, codeElement.nextSibling.nextSibling);

    // Bir süre sonra spanı kaldır
    setTimeout(function () {
        span.remove();
    }, 1000);
}

// Sayfa yüklendiğinde createCopyButtons fonksiyonunu çağır
window.addEventListener('load', createCopyButtons);

Moment.js nedir ve nasıl kullanılır?

JavaScript kütüphaneleri programlama sektöründe sıklıkla karşılaşılan sorunları çözmek ve otomatikleştirmek için geliştirilir. Popüler JavaScript kütüphanelerinden biri de Moment.js'tir. Peki Moment.js nedir ve programlama dünyasında...

JavaScript’te değişkenler ve aralarındaki farklar: var, let & const

JavaScript, web geliştirmenin temel taşlarından biri olarak, dinamik ve etkileşimli web siteleri oluşturmanın anahtarıdır. Bu güçlü programlama dilinin en temel yönlerinden biri, veri saklama...

Fiyat takip yazılımları nasıl çalışır?

E-ticaret dünyası her geçen gün daha rekabetçi bir hal alıyor. Bu ortamda, işletmelerin rakiplerini ve pazar trendlerini yakından takip etmeleri hayati önem taşıyor. İşte...

HTML div elementi ve kullanım senaryoları

Her gün milyonlarca web sayfasını ziyaret ediyor, okuyor veya üzerlerinde işlem yapıyoruz. Peki, son kullanıcılar için görsel olarak renderlanan bu sayfaların arkasındaki kodlarda kullanılan...

React ‘hook’ nedir ve ne için kullanılır?

React hook, React JavaScript kitaplığındaki bir özelliktir. Hook'lar, sınıf bileşenlerine ihtiyaç duymadan, fonksiyon bileşenlerinde durum (state) ve diğer React özelliklerini kullanmaya olanak tanır. İlk...

IPv4 ve IPv6 nedir? Aralarındaki farklar nelerdir?

Her gün internete bağlanıyoruz, ancak teknik olarak internete nasıl bağlandığımızla ilgili bir fikriniz var mı? İnternet, modern yaşamın ayrılmaz bir parçası haline geldi ve...

Daha fazla blog içerik

Moment.js nedir ve nasıl kullanılır?

JavaScript kütüphaneleri programlama sektöründe sıklıkla karşılaşılan sorunları çözmek ve otomatikleştirmek için geliştirilir. Popüler JavaScript kütüphanelerinden biri de Moment.js'tir. Peki Moment.js nedir ve programlama dünyasında...

JavaScript’te değişkenler ve aralarındaki farklar: var, let & const

JavaScript, web geliştirmenin temel taşlarından biri olarak, dinamik ve etkileşimli web siteleri oluşturmanın anahtarıdır. Bu güçlü programlama dilinin en temel yönlerinden biri, veri saklama...

Fiyat takip yazılımları nasıl çalışır?

E-ticaret dünyası her geçen gün daha rekabetçi bir hal alıyor. Bu ortamda, işletmelerin rakiplerini ve pazar trendlerini yakından takip etmeleri hayati önem taşıyor. İşte...

HTML div elementi ve kullanım senaryoları

Her gün milyonlarca web sayfasını ziyaret ediyor, okuyor veya üzerlerinde işlem yapıyoruz. Peki, son kullanıcılar için görsel olarak renderlanan bu sayfaların arkasındaki kodlarda kullanılan...