chore: 剪贴板相关

This commit is contained in:
MoonLeeeaf
2024-05-17 23:35:07 +08:00
parent b362a1f228
commit f19c3c793a
3 changed files with 27 additions and 10 deletions

View File

@@ -43,3 +43,12 @@ body {
margin-top: 60px;
z-index: 100;
}
[n-id=pageChatSeesion]::after {
content: "";
position: sticky;
bottom: 0;
display: block;
height: var(--pseudo-height); /* 设置伪元素的高度 */
z-index: -1; /* 防止遮挡实际内容 */
}

View File

@@ -41,6 +41,7 @@
<!-- 代替私人 fixed 并提供更好的兼容性 -->
<script src="https://cdn.jsdelivr.net/gh/wilddeer/stickyfill@2.1.0/dist/stickyfill.min.js"></script>
<script src="https://unpkg.com/jquery@3.7.1/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/clipboard@2.0.11/dist/clipboard.min.js"></script>
<link rel="icon" href="icon.ico" />
<title>铃之椅</title>
</head>
@@ -49,7 +50,7 @@
class="mdui-theme-primary-teal mdui-theme-accent-teal mdui-drawer-body-left mdui-appbar-with-toolbar mdui-theme-layout-auto"
id="app">
<input n-id="textCopier" class="mdui-hidden" />
<input n-id="textCopierBtn" class="mdui-hidden" />
<div id="lingchair-app" style="height: 100%;">
<!-- 侧滑栏 -->
@@ -94,7 +95,10 @@
<a onclick="ContactsList.reloadList()" n-id="contactsRefresh" class="mdui-btn mdui-btn-icon mdui-ripple">
<i class="mdui-icon material-icons">refresh</i>
</a>
<a class="mdui-btn mdui-btn-icon mdui-ripple" n-id="switchNotifications" mdui-tooltip="{content:'开/关通知'}">
<a onclick="ContactsList.openAddDialog()" n-id="contactsAdd" class="mdui-btn mdui-btn-icon mdui-ripple">
<i class="mdui-icon material-icons">add</i>
</a>
<a class="mdui-btn mdui-btn-icon mdui-ripple" n-id="switchNotifications">
<i class="mdui-icon material-icons" n-id="switchNotificationsIcon">notifications_off</i>
</a>
<a mdui-menu="{target: '#appbar-menu'}" class="mdui-btn mdui-btn-icon mdui-ripple">
@@ -136,7 +140,7 @@
<div class="mdui-center" style="margin: 15px;"><a href="javascript:;" onclick="ChatMsgAdapter.loadMore()"
class="mdui-text-color-theme">点我</a>继续加载前面的聊天记录, 或者<a href="javascript:;"
onclick="ChatMsgAdapter.scrollToBottom()" class="mdui-text-color-theme">回到底部</a></div>
<div n-id="pageChatSeesion" style="flex: 1 1 auto;display: flex;flex-direction: column;"></div>
<div n-id="pageChatSeesion" style="flex: 1 1 auto;display: flex;flex-direction: column;position: relative;"></div>
</div>
<!-- 妈的黑化了 私人玩意这么难整 早知道 z-index 弄死它得了 浪费我时间 我就没试过这么离谱的样式表 第三方库真难写CSS 就应该先写后端的 啊啊啊啊啊啊 -->
<!-- 不黑化了 因为 stickyfill -->

View File

@@ -189,11 +189,12 @@ if (localStorage.useNotifications == "true")
// https://www.runoob.com/w3cnote/javascript-copy-clipboard.html
function copyText(t) {
let cp = viewBinding.textCopier.get(0)
cp.value = t
cp.select()
cp.setSelectionRange(0, 99999)
navigator.clipboard.writeText(cp.value)
let btn = viewBinding.textCopierBtn
btn.attr("data-clipboard-text", t)
new ClipboardJS(btn.get(0)).on('success', (e) => {
e.clearSelection()
})
btn.click()
}
// https://zhuanlan.zhihu.com/p/162910462
@@ -407,8 +408,10 @@ class ChatMsgAdapter {
static addSystemMsg(m, re) {
let e
if (re)
// 加到头部
e = $($.parseHTML(m)).prependTo(viewBinding.pageChatSeesion)
else
// 加到尾部
e = $($.parseHTML(m)).appendTo(viewBinding.pageChatSeesion)
return e
}
@@ -416,7 +419,8 @@ class ChatMsgAdapter {
let elementRect = viewBinding.pageChatSeesion.get(0).getBoundingClientRect()
return (elementRect.bottom <= window.innerHeight)
}
// 不会压栈 只添加消息 返回消息的JQ对象
// 添加消息 返回消息的JQ对象
// name: 用户id m: 消息 t: 时间戳 re: 默认加到尾部 msgid: 消息id
static async addMsg(name, m, t, re, msgid) {
let nick = await NickCache.getNick(name) // re.data == null ? name : re.data.nick
@@ -716,7 +720,7 @@ else
// 登录到账号
let dialogSignIn
// 谨防 localStorage 字符串数据大坑
if (localStorage.isSignIn === "false")
if (localStorage.isSignIn == "false")
dialogSignIn = new mdui.Dialog(viewBinding.dialogSignIn.get(0), {
modal: true,
closeOnEsc: false,