QQ風格客服聊天窗口

QQ風格客服聊天窗口

    • 展示
    • 引入方式

展示

在這里插入圖片描述
在這里插入圖片描述

引入方式

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>QQ風格客服聊天窗口</title><style>body {font-family: 'Microsoft YaHei', sans-serif;display: flex;justify-content: center;align-items: center;height: 100vh;margin: 0;background-color: #000000;}.chat-container {width: 800px;height: 500px;border-radius: 5px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);display: flex;flex-direction: column;overflow: hidden;}.chat-header {background: linear-gradient(to right, #12B7F5, #1E90FF);color: white;padding: 10px 15px;display: flex;justify-content: space-between;align-items: center;}.chat-title {font-weight: bold;font-size: 16px;}.close-btn {cursor: pointer;font-size: 18px;}.chat-messages {flex: 1;padding: 10px;background-color: #f0f0f0;overflow-y: auto;}.message {margin-bottom: 15px;display: flex;flex-direction: column;}.message-content {max-width: 70%;padding: 8px 12px;border-radius: 5px;position: relative;word-wrap: break-word;}.received .message-content {background-color: white;align-self: flex-start;border-top-left-radius: 0;}.sent .message-content {background-color: #9EEA6A;align-self: flex-end;border-top-right-radius: 0;}.message-time {font-size: 10px;color: #999;margin-top: 3px;}.received .message-time {align-self: flex-start;}.sent .message-time {align-self: flex-end;}.chat-input {display: flex;padding: 10px;background-color: #f9f9f9;border-top: 1px solid #ddd;}.chat-input textarea {flex: 1;border: 1px solid #ddd;border-radius: 3px;padding: 8px;resize: none;outline: none;font-family: inherit;height: 60px;}.send-btn {background-color: #1E90FF;color: white;border: none;border-radius: 3px;padding: 0 15px;margin-left: 10px;cursor: pointer;outline: none;}.send-btn:hover {background-color: #187bcd;}</style>
</head>
<body><!-- ## 引入方式## 必須方入文件<h1 onclick="gokefu();">1111</h1><script>function gokefu(key) {if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Phone)/i))) {window.open("./kefu.html");} else {window.open("./kefu.html");}}</script> --><div class="chat-container"><div class="chat-header"><div class="chat-title">在線客服</div><div class="close-btn">×</div></div><div class="chat-messages" id="messages"><!-- 消息將在這里動態添加 --></div><div class="chat-input"><textarea id="userInput" placeholder="請輸入消息..."></textarea><button class="send-btn" id="sendBtn">發送</button></div></div><script>document.addEventListener('DOMContentLoaded', function() {const messagesContainer = document.getElementById('messages');const userInput = document.getElementById('userInput');const sendBtn = document.getElementById('sendBtn');const closeBtn = document.querySelector('.close-btn');// 配置自動回復消息const autoReplies = ["您好,歡迎咨詢我們的客服系統。","請問有什么可以幫您的嗎?","我們的工作時間是周一至周五9:00-18:00。","如需人工服務,請稍等片刻,我們將盡快為您轉接。","感謝您的咨詢,祝您生活愉快!"];let currentReplyIndex = 0;let replyInterval;// 添加消息到聊天窗口function addMessage(content, isReceived) {const messageDiv = document.createElement('div');messageDiv.className = `message ${isReceived ? 'received' : 'sent'}`;const now = new Date();const timeString = `${now.getHours()}:${now.getMinutes().toString().padStart(2, '0')}`;messageDiv.innerHTML = `<div class="message-content">${content}</div><div class="message-time">${timeString}</div>`;messagesContainer.appendChild(messageDiv);messagesContainer.scrollTop = messagesContainer.scrollHeight;}// 發送用戶消息function sendUserMessage() {const message = userInput.value.trim();if (message) {addMessage(message, false);userInput.value = '';// 用戶發送消息后開始自動回復if (!replyInterval) {startAutoReply();}}}// 開始自動回復function startAutoReply() {// 先立即發送第一條if (currentReplyIndex < autoReplies.length) {addMessage(autoReplies[currentReplyIndex], true);currentReplyIndex++;}// 設置定時器發送剩余消息replyInterval = setInterval(() => {if (currentReplyIndex < autoReplies.length) {addMessage(autoReplies[currentReplyIndex], true);currentReplyIndex++;} else {clearInterval(replyInterval);replyInterval = null;}}, 5000); // 每10秒發送一條}// 事件監聽sendBtn.addEventListener('click', sendUserMessage);userInput.addEventListener('keypress', function(e) {if (e.key === 'Enter' && !e.shiftKey) {e.preventDefault();sendUserMessage();}});closeBtn.addEventListener('click', function() {document.querySelector('.chat-container').style.display = 'none';if (replyInterval) {clearInterval(replyInterval);}});// 初始歡迎消息setTimeout(() => {addMessage("您好,歡迎使用我們的客服系統,請問有什么可以幫您的?", true);}, 500);startAutoReply();});</script>
</body>
</html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75534.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75534.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75534.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【家政平臺開發(37)】家政平臺蛻變記:性能優化與代碼重構揭秘

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析,剖析家政行業現狀、挖掘用戶需求與梳理功能要點,到系統設計階段的架構選型、數據庫構建,再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化,測試階段多維度保障平臺質量,…

PostgreSQL 的 COPY 命令

PostgreSQL 的 COPY 命令 PostgreSQL 的 COPY 命令是高效數據導入導出的核心工具&#xff0c;性能遠超常規 INSERT 語句。以下是 COPY 命令的深度解析&#xff1a; 一 COPY 命令基礎 1.1 基本語法對比 命令類型語法示例執行位置文件訪問權限服務器端COPYCOPY table FROM /p…

Sa-Token 自定義插件 —— SPI 機制講解(一)

前言 博主在使用 Sa-Token 框架的過程中&#xff0c;越用越感嘆框架設計的精妙。于是&#xff0c;最近在學習如何給 Sa-Token 貢獻自定義框架。為 Sa-Token 的開源盡一份微不足道的力量。我將分三篇文章從 0 到 1 講解如何為 Sa-Token 自定義一個插件&#xff0c;這一集將是前沿…

論文精度:基于LVNet的高效混合架構:多幀紅外小目標檢測新突破

論文地址:https://arxiv.org/pdf/2503.02220 目錄 一、論文背景與結構 1.1 研究背景 1.2 論文結構 二、核心創新點解讀 2.1 三大創新突破 2.2 創新結構原理 2.2.1 多尺度CNN前端 2.2.2 視頻Transformer設計 三、代碼復現指南 3.1 環境配置 3.2 數據集準備 3.3 訓…

解決 Ubuntu 上 Docker 安裝與網絡問題:從禁用 IPv6 到配置代理

解決 Ubuntu 上 Docker 安裝與網絡問題的實踐筆記 在 Ubuntu&#xff08;Noble 版本&#xff09;上安裝 Docker 時&#xff0c;我遇到了兩個常見的網絡問題&#xff1a;apt-get update 失敗和無法拉取 Docker 鏡像。通過逐步排查和配置&#xff0c;最終成功運行 docker run he…

指針的進階2

六、函數指針數組 字符指針數組 - 存放字符指針的數組 char* arr[10] 整型指針數組 - 存放整型指針的數組 int* arr[10] 函數指針數組 - 存放函數指針的數組 void my_strlen() {} int main() {//指針數組char* ch[5];int arr[10] {0};//pa是是數組指針int (*pa)[10] &…

速盾:高防CDN節點對收錄有影響嗎?

引言 搜索引擎收錄是網站運營中至關重要的環節&#xff0c;它直接影響著網站的曝光度和流量。近年來&#xff0c;隨著網絡安全威脅的增加&#xff0c;許多企業開始采用高防CDN&#xff08;內容分發網絡&#xff09;來保護其網站免受DDoS攻擊和其他形式的網絡攻擊。然而&#x…

2025藍橋杯省賽C/C++研究生組游記

前言 至少半年沒寫算法題了&#xff0c;手生了不少&#xff0c;由于python寫太多導致行末老是忘記打分號&#xff0c;printf老是忘記寫f&#xff0c;for和if的括號也老是忘寫&#xff0c;差點連&&和||都忘記了。 題目都是回憶版本&#xff0c;可能有不準確的地方。 …

Quill富文本編輯器支持自定義字體(包括新舊兩個版本,支持Windings 2字體)

文章目錄 1 新版&#xff08;Quill2 以上版本&#xff09;2 舊版&#xff08;Quill1版本&#xff09; 1 新版&#xff08;Quill2 以上版本&#xff09; 注意&#xff1a;新版設置 style"font-family: Wingdings 2" 這種帶空格的字體樣式會被過濾掉&#xff0c;故需特…

dbt:新一代數據轉換工具

dbt&#xff08;Data Build Tool&#xff09;一款專為數據分析和工程師設計的開源工具&#xff0c;專注于 ETL/ELT 流程的數據轉換&#xff08;Transform&#xff09;環節&#xff0c;幫助用戶以高效、可維護的方式將原始數據轉換為適合分析的數據模型。 用戶只需要編寫查詢&am…

【家政平臺開發(39)】解鎖家政平臺測試秘籍:計劃與策略全解析

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析,剖析家政行業現狀、挖掘用戶需求與梳理功能要點,到系統設計階段的架構選型、數據庫構建,再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化,測試階段多維度保障平臺質量,…

Java中的Map vs Python字典:核心對比與使用指南

一、核心概念 1. 基本定義 Python字典&#xff08;dict&#xff09; &#xff1a;動態類型鍵值對集合&#xff0c;語法簡潔&#xff0c;支持快速查找。Java Map&#xff1a;接口&#xff0c;常用實現類如 HashMap、LinkedHashMap&#xff0c;需聲明鍵值類型&#xff08;泛型&…

C語言基礎之數組

1. 一維數組的創建和初始化 數組的創建 數組是一組相同類型元素的集合。 數組的創建方式&#xff1a; type_t arr_name [const_n]; //type_t 是指數組的元素類型 //const_n是一個常量表達式&#xff0c;用來指定數組的大小 數組創建的實例&#xff1a; //代碼1int arr1[10]; …

虛幻引擎5-Unreal Engine筆記之“將MyStudent變量設置為一個BP_Student的實例”這句話如何理解?

虛幻引擎5-Unreal Engine筆記之“將MyStudent變量設置為一個BP_Student的實例”這句話如何理解&#xff1f; code review! 文章目錄 虛幻引擎5-Unreal Engine筆記之“將MyStudent變量設置為一個BP_Student的實例”這句話如何理解&#xff1f;理解這句話的關鍵點1.類&#xff08…

提示詞 (Prompt)

引言 在生成式 AI 應用中&#xff0c;Prompt&#xff08;提示&#xff09;是與大型語言模型&#xff08;LLM&#xff09;交互的核心輸入格式。Prompt 的設計不僅決定了模型理解任務的準確度&#xff0c;還直接影響生成結果的風格、長度、結構與可控性。隨著模型能力和應用場景…

十二、C++速通秘籍—靜態庫,動態庫

上一章節&#xff1a; 十一、C速通秘籍—多線程-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/147055932?spm1001.2014.3001.5502 本章節代碼&#xff1a; cpp2/library CuiQingCheng/cppstudy - 碼云 - 開源中國https://gitee.com/cuiqingcheng/cppst…

什么是繼承?js中有哪兒些繼承?

1、什么是繼承&#xff1f; 繼承是面向對象軟件技術中的一個概念。 2、js中有哪兒些繼承&#xff1f; js中的繼承有ES6的類class的繼承、原型鏈繼承、構造函數繼承、組合繼承、寄生組合繼承。 2.1 ES6中類的繼承 class Parent {constructor() {this.age 18;} }class Chil…

Linux進程通信入門:匿名管道的原理、實現與應用場景

Linux系列 文章目錄 Linux系列前言一、進程通信的目的二、進程通信的原理2.1 進程通信是什么2.2 匿名管道通訊的原理 三、進程通訊的使用總結 前言 Linux進程間同通訊&#xff08;IPC&#xff09;是多個進程之間交換數據和協調行為的重要機制&#xff0c;是我們學習Linux操作系…

探秘Transformer系列之(26)--- KV Cache優化 之 PD分離or合并

探秘Transformer系列之&#xff08;26&#xff09;— KV Cache優化 之 PD分離or合并 文章目錄 探秘Transformer系列之&#xff08;26&#xff09;--- KV Cache優化 之 PD分離or合并0x00 概述0x01 背景知識1.1 自回歸&迭代1.2 KV Cache 0x02 靜態批處理2.1 調度策略2.2 問題…