【问题标题】:Warn when clicking external links [closed]单击外部链接时发出警告[关闭]
【发布时间】:2021-05-28 21:21:24
【问题描述】:

我想在点击外部页面时警告用户,但是除了弹出窗口之外还有其他解决方案吗:

上面不需要的示例代码<a href="..." onclick="return confirm('You\'re about to leave this site. Are you sure?')">External Link</a>?

这是来自不同站点的工作示例:

谢谢!

【问题讨论】:

  • 因此他们在页面上打开了一个模式并使用超时来重定向。将 onclick 添加到不同域的链接。停止点击执行、显示消息、设置超时、重定向。
  • 那些弹出窗口很烦人......您必须捕获页面上链接上的所有点击,并显示您的弹出窗口。
  • @ThomasSablik 这不会有帮助
  • @epascarello 为什么不呢?

标签: javascript html jquery css hyperlink


【解决方案1】:

您基本上必须捕获所有点击并检查它们是否在锚点和不同的域上。

document.body.addEventListener("click", function(evt) {
  evt.preventDefault();
  var anchor = evt.target.closest("a")
  if (anchor && anchor.href && anchor.host !== window.location.host) {
    document.querySelector(".message").classList.add("active");
    window.setTimeout(function () {
      window.location.href = anchor.href;
    }, 5000);
  }
});
.message {
  display: none;
}

.message.active {
  display: block;
  position: absolute;
  width: 200px;
  height: 100px;
  background-color: red;
}
<a href="https://www.example.com">Example</a>
<a href="/">Same Domain</a>

<div class="message">
  Whatever you want to say.
</div>

仅供参考:此代码未处理他们使用 tab/shift/右键单击在新窗口中打开链接的情况。大多数必须通知用户这是外部链接的组织只是在外部链接旁边添加了一个图标。

【讨论】:

  • 谢谢,但是如何显示“取消”按钮和“立即执行”按钮?
猜你喜欢
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多