import { Divider, Space } from "antd"; import SuggestionButton from "./SuggestionButton"; import DiscussionButton from "../../discussion/DiscussionButton"; import type { ISentence } from "../SentEdit"; import { type MouseEventHandler, useEffect, useState } from "react"; interface IWidget { data: ISentence; compact?: boolean; float?: boolean; hideCount?: boolean; hideInZero?: boolean; onMouseEnter?: MouseEventHandler | undefined; onMouseLeave?: MouseEventHandler | undefined; } const InteractiveButton = ({ data, compact = false, float = false, hideCount = false, hideInZero = false, onMouseEnter, onMouseLeave, }: IWidget) => { const [left, setLeft] = useState(0); const [width, setWidth] = useState(0); useEffect(() => { // 获取目标元素 const targetNode = document.getElementsByClassName("article_shell")[0]; if (!targetNode) { return; } const rect = targetNode.getBoundingClientRect(); setLeft(rect.left); setWidth(rect.width); // 创建ResizeObserver实例并传入回调函数 const resizeObserver = new ResizeObserver((entries) => { for (const entry of entries) { const { width } = entry.contentRect; setWidth(width); } }); // 观察目标节点 resizeObserver.observe(targetNode); // 定义一个函数来处理窗口大小变化 function handleResize() { // 获取窗口宽度 // 在控制台中输出新的窗口宽度 //console.log(`新的窗口宽度是:${windowWidth}px`); // 假设你有一个div元素,它的id是"myDiv" const myDiv = document.getElementsByClassName("article_shell")[0]; if (!myDiv) { return; } // 使用getBoundingClientRect()方法获取元素的位置和大小 const rect = myDiv.getBoundingClientRect(); // 从返回的对象中获取left属性 const leftPosition = rect.left; // 输出left位置 //console.log(`div的left位置是:${leftPosition}px`); setLeft(leftPosition); // 在这里,你可以根据窗口宽度来调整页面布局或样式 } // 为resize事件添加监听器 window.addEventListener("resize", handleResize); }, []); const ButtonInner = ( {compact ? undefined : } ); return float ? ( {ButtonInner} ) : ( ButtonInner ); }; export default InteractiveButton;