javascript - Angular: Cum să obții URL-ul copiat din clipboard?


Așadar, așa extrag textul copiat din clipboard:

const data = event.clipboardData.getData('text/html');

Dar acest cod nu funcționează dacă am copiat un URL. Datele vor fi "" goale. Nu sunt sigur de ce este diferit față de un text normal.

Cum obțin URL-ul copiat?


EDITEAZĂ

Evenimentul pe care l-am primit provine din evenimentul paste:

paste(event: ClipboardEvent) {
  const data = event.clipboardData.getData('text/html');
}

Din acest element HTML (folosesc Angular):

<div
    id="content"
    contentEditable="true"
    (paste)="paste($event)"
></div>

Răspuns #1

Nu sunt sigur ce este event în codul tău, dar poți obține date din clipboard oriunde în browserul tău prin API-ul Clipboard.

https://developer.mozilla.org/ro-RO/docs/Web/API/Clipboard/readText

const copiedData = await navigator.clipboard.readText()

Răspunsul #2

Deci, din ceea ce am citit pe acest Codepen, codul ia textContent din blocurile de citate și apoi le pune pe toate în clipboard

handleCopyClick.addEventListener('click', () => {
    let text = quoteText.textContent;
    let author = quoteAuthor.textContent;
    navigator.clipboard.writeText(`${text} ${author}`);
});

Adaptându-l la cazul tău, codul ar arăta cam așa:

paste(event: ClipboardEvent) {
  let url = urlBlock.textContent;
  navigator['clipboard'].writeText(`${url}`)
}

Apreciere acestui articol FreeCodeCamp pentru inspirație. Această postare de pe SO ar putea, de asemenea, să răspundă la unele dintre întrebările tale.