Autor Zpráva
ForestCZE
Profil
Ahoj, snažím se rozchodit následující:

<a class="inviteToTeam" n:href="User:invite id => $team->id, invite => $team->invite" title="Klikněte pro zkopírování invite odkazu"><i class="fas fa-link"></i></a>

function invite()
{
    document.querySelector(".inviteToTeam").addEventListener("click", function(event){
        event.preventDefault();
        var link = this.getAttribute("href");
        link.select();
        link.setSelectionRange(0, link.length - 1);
        document.execCommand("copy");
    });
}

Odkaz získám, ale kopírování mi vyhodí hlášku:

Uncaught TypeError: link.select is not a function
at HTMLAnchorElement.<anonymous>


Netuším, proč by to takto nemělo fungovat.
Radek9
Profil
ForestCZE:
Metoda getAttribute vrací string. Ten nemá žádnou metodu select ani setSelectionRange. Musíš tu adresu z href dát to nějakého kontejneru, který tyhle metody podporuje (např. do inputu).
ForestCZE
Profil
Radek9:

Úprava:

function invite()
{
    document.querySelector(".inviteToTeam").addEventListener("click", function(event){
        event.preventDefault();
        var link = this.getAttribute("href");
        document.body.innerHTML += '<input type="text" id="invite" value="' + link + '">';
        var copyText = document.getElementById("invite");
        copyText.select();
        copyText.setSelectionRange(0, copyText.length - 1);
        document.execCommand("copy");
    });
}

Ale stejně se tomu nějak nechce.

EDIT: Problém byl v délce toho range. Takže takto:

function invite()
{
    document.querySelector(".inviteToTeam").addEventListener("click", function(event){
        event.preventDefault();
        var link = this.getAttribute("href");
        document.body.innerHTML += '<input type="hidden" id="invite" value="' + link + '">';
        var copyText = document.querySelector("#invite");
        copyText.select();
        copyText.setSelectionRange(0, copyText.innerHTML.length - 1);
        document.execCommand("copy");
    });
}

EDIT2: S typem hidden to nefunguje.
Radek9
Profil
ForestCZE:
Nějak takhle by to mohlo jít: Živá ukázka
ForestCZE
Profil
Radek9:
Díky, to tvoje vypadá mnohem lépe :)
Taps
Profil
Pro zajímavost se můžeš ještě mrknout na Kopírování do schránky

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0