【问题标题】:Copying permalink by using javascript使用 javascript 复制永久链接
【发布时间】:2019-12-12 13:20:08
【问题描述】:

我的网站urlhttp://localhost:4200/reader-main。我希望在单击anchor 链接时复制它。复制的链接可以粘贴到任何地方。
代码:
HTML:

<div class="row permalink">
      <a id="copyPermalink" class="copyLink" href="" (click)="copyToClipboard($event)" aria-label="Copy Permalink">Copy Permalink</a>
    </div>  

Javascript:

copyToClipboard(event: any): void {
    const copyUrl = document.querySelector('copyLink');
    window.getSelection();
    try {
      const successful = document.execCommand('copy');
      const message = successful ? 'Successful' : 'Unsuccessful';
      console.log(copyUrl);
      alert(message);
    } catch (err) {
      console.log('Not able to copy', err);
    }
    return false;
  }  

但在上面的代码中,console.log(copyurl) 返回 null。并且 URL 没有被复制。如何解决?

【问题讨论】:

标签: javascript


【解决方案1】:

您可以为页面上的所有锚标签添加事件监听器,并将点击事件附加到函数copyToClipboard()


let a = document.querySelectorAll("a");

for (let i = 0; i < a.length; i++) {
  a[i].addEventListener("click", function(e) {
    e.preventDefault();
    copyToClipboard(this);
  });
}

function copyToClipboard(anchor) {
  try {
    let input = document.createElement('input');
    input.type = "text";
    input.setAttribute("value", window.location.href);
    input.id = "test";
    document.body.appendChild(input);
    
    let inputEl = document.getElementById("test");
    inputEl.focus();
    inputEl.setSelectionRange(0, inputEl.value.length);
    
    const successful = document.execCommand('copy');
    document.body.removeChild(inputEl);

    const message = successful ? 'Successful' : 'Unsuccessful';
    console.log(anchor);
    alert(message);
    console.log(window.location.href);
  } catch (err) {
    console.log('Not able to copy', err);
  }
}
<div class="row permalink">
  <a id="copyPermalink" class="copyLink" href="" aria-label="Copy Permalink">Copy Permalink</a>
</div>

但在上面的代码中,console.log(copyurl) 返回 null。并且 URL 没有被复制。如何解决?

在这条指令const copyUrl = document.querySelector('copyLink'); 中,您在.copyLink 处缺少.


【讨论】:

  • 我已经编辑了你的答案。 input.getSelection 不是函数。并且 url 不会被复制...
  • @AjayKulkarni 查看我之前的回答之一stackoverflow.com/questions/59261438/copy-button-functionality/…。那里存在输入元素,这里我正在创建它。但我仍然无法弄清楚出了什么问题。给我几秒钟。
  • 这是我修改后的代码...jsfiddle.net/qxzuc806...链接也没有被复制到我的代码中
  • @AjayKulkarni 奇怪的是,我从上面的链接中得到的答案很好。
  • 但在我的情况下不起作用,请检查我在 jsfiddle 中修改的代码
猜你喜欢
  • 1970-01-01
  • 2012-10-30
  • 1970-01-01
  • 2017-07-30
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多