javascript - 网站中的所有页面链接以打开聊天窗口
问题描述
我有一个客户希望他的所有页面链接在 html 主页中,即当点击任何菜单、主页、所有内容时,打开聊天支持框。正常的href应该像这个示例那样做,但是主页上有几十个链接,他不想手动删除每个链接而只用一个代码来做,这样他可以随时简单地删除它。
<a href="javascript:jivo_api.open();">Open the chat</a>
单击链接时我需要打开聊天的链接示例:
<li class="list-link"> <a href="tyres/index.html"> <i class="tyres ico"></i> anvelope <i class="wlf wlf-arrow-right arrow-link"></i> </a> </li>
解决方案
正常的href应该像这个样本
您显示的代码未使用普通href
s。它使用了 25 多年前的技术,是我们在有任何 API 标准或关注可访问性之前处理点击的方式。
首先,不要仅将超链接用作 JavaScript 事件挂钩。网页上的任何可见元素都支持click
事件,但超链接表示导航。那些依赖辅助技术(如屏幕阅读器)的人在使用超链接时可能会在导航您的网站时遇到问题,但在导航时则不会。相反,只需使用另一个内联元素(如span
)并将其提供给您的click
事件处理程序。
其次,javascript:....
不需要,因为您将把 JavaScript 与 HTML 分开(也称为“关注点分离”)。
现在,回答你的问题。如果您只是简单地提供任何/所有在单击公共 CSS 类时应该打开聊天窗口的元素,那么您可以创建非常简单的代码来查找所有元素,循环遍历它们,并为它们分配所有相同的事件处理程序,这将打开聊天。这是一个例子:
// Get all the elements that have the "chat" class and put into an array
let chatElements = Array.prototype.slice.call(document.querySelectorAll(".chat"));
// Loop over the array
chatElements.forEach(function(item){
// Assign an event handler
item.addEventListener("click", function(){
console.log("open chat window here");
});
});
.chat { cursor:pointer; color:blue; }
<p class="chat">I will open the chat</p>
<p>I won't open the chat</p>
<div>I will <span class="chat">open the chat</span></div>
<h1 class="chat">I will open the chat</h1>
<h5>I won't open the chat</h5>
推荐阅读
- deep-learning - 注意力机制真的是注意力还是只是再次回顾记忆?
- .htaccess - .htaccess - RewriteRule 在另一个 RewriteRule 之后附加到 URL 的末尾
- javascript - 如何在普通 HTML 或 JSP 文件中集成 Vue 组件
- php - 将 FPDF 与作曲家自动加载一起使用
- typescript - TypeScript 中的“扩展”与 C# 中对泛型的约束不同
- jquery - Bootstrap 3.3 从嵌套链接中隐藏导航栏
- arrays - 在Golang中替换数组结构中的数据
- php - 检查面向对象编程中是否存在密钥
- django - 找不到 Django 静态文件 404
- java - 闭包示例的流程 | 爪哇 8