import { $, DOMUtils, addStyle, log } from "@/env"; import { Panel } from "@components/setting/panel"; import { CSDNBlogArticleRightToolBarBlock } from "./CSDNBlogArticleRightToolBarBlock"; export const CSDNBlogArticleRightToolBar = { init() { CSDNBlogArticleRightToolBarBlock.init(); Panel.execMenuOnce( ["csdn-blog-coverRightToolOffSet", "csdn-blog-rightToolbarTopOffset", "csdn-blog-rightToolbarRightOffset"], (option) => { if (!option.value[0]) return; return this.initRightToolbarOffset(option.value[1], option.value[2]); } ); DOMUtils.onReady(() => { Panel.execMenuOnce("csdn-blog-addGotoRecommandButton", () => { this.addGotoRecommandButton(); }); }); }, /** * 【添加】前往评论按钮,在返回顶部的下面 */ addGotoRecommandButton() { log.info("【添加】前往评论按钮,在返回顶部的上面"); let gotoRecommandNode = document.createElement("a"); gotoRecommandNode.className = "option-box"; gotoRecommandNode.setAttribute("data-type", "gorecommand"); gotoRecommandNode.innerHTML = /*html*/ ` 前往
评论
`; gotoRecommandNode.addEventListener("click", function () { let toolbarBoxElement = document.querySelector("#toolBarBox"); if (!toolbarBoxElement || !toolbarBoxElement.getClientRects().length) { let $pcCommentBox = $("#pcCommentBox"); if ($pcCommentBox && $pcCommentBox.getClientRects().length) { toolbarBoxElement = $pcCommentBox; } else { log.error("评论区处于隐藏状态"); return; } } log.info("滚动到评论"); let toolbarBoxOffsetTop = toolbarBoxElement.getBoundingClientRect().top + window.scrollY; let csdnToolBarElement = document.querySelector("#csdn-toolbar") as HTMLDivElement; let csdnToolBarStyles = window.getComputedStyle(csdnToolBarElement); let csdnToolBarHeight = csdnToolBarElement.clientHeight - parseFloat(csdnToolBarStyles.paddingTop) - parseFloat(csdnToolBarStyles.paddingBottom); window.scrollTo({ top: toolbarBoxOffsetTop - csdnToolBarHeight - 8, left: 0, behavior: "smooth", }); }); DOMUtils.waitNode(".csdn-side-toolbar").then(() => { let targetElement = document.querySelector(".csdn-side-toolbar a:nth-last-child(2)") as HTMLAnchorElement; (targetElement.parentElement as HTMLDivElement).insertBefore(gotoRecommandNode, targetElement.nextSibling); }); }, /** * 初始化右侧工具栏的偏移(top、right) */ async initRightToolbarOffset(top: number, right: number) { log.info("初始化右侧工具栏的偏移(top、right)"); return addStyle(/*css*/ ` .csdn-side-toolbar{ left: unset !important; top: ${top}px !important; right: ${right}px !important; } `); }, };