解决拖动div时,文字被选中问题

在可拖动div加上css样式

user-select:none;

明白了你的需求,以下是更新后的代码,可以实现拖动 `<div>` 选中 LaTeX 文字,并且可以将 LaTeX 和 `<div>` 的坐标保存在本地 JSON 文件中,HTML 页面可以读取 JSON 文件来创建 `<div>`,在拖动 `<div>` 结束后更新本地 JSON 文件。 首先,我们需要添加一个用于保存 LaTeX 和 `<div>` 坐标的 JSON 文件。在同级目录下创建一个名为 `formulas.json` 的文件,内容如下: ```json { "formulas": [] } ``` 然后,将以下代码添加到 HTML 文件中: ```html <!DOCTYPE html> <html> <head> <title>MathJax Example</title> <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script> <style> .mathjax-formula { font-size: 2.8em; background-color: green; position: absolute; left: 0; top: 0; cursor: move; padding: 5px; border-radius: 5px; color: white; } </style> </head> <body> <div id="mathjax-formulas-container"></div> <script> var formulas = []; function loadFormulas() { fetch("formulas.json") .then(function(response) { return response.json(); }) .then(function(data) { formulas = data.formulas; var mathjaxFormulasContainer = document.getElementById("mathjax-formulas-container"); formulas.forEach(function(formula) { var newFormula = document.createElement("div"); newFormula.className = "mathjax-formula"; newFormula.style.left = formula.position.x + "px"; newFormula.style.top = formula.position.y + "px"; newFormula.innerText = formula.latexCode; mathjaxFormulasContainer.appendChild(newFormula); MathJax.Hub.Queue(["Typeset", MathJax.Hub, newFormula]); }); }); } function saveFormulas() { var data = { formulas: formulas }; fetch("formulas.json", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }); } document.addEventListener("mousedown", function(event) { if (event.button === 0) { var target = event.target; if (target.classList.contains("mathjax-formula")) { offsetX = event.clientX - target.offsetLeft; offsetY = event.clientY - target.offsetTop; selectedFormula = target; document.addEventListener("mousemove", moveFormula); } } }); function moveFormula(event) { if (selectedFormula && event.buttons === 1) { selectedFormula.style.left = event.clientX - offsetX + "px"; selectedFormula.style.top = event.clientY - offsetY + "px"; } else { document.removeEventListener("mousemove", moveFormula); } } document.addEventListener("mouseup", function(event) { if (event.button === 0) { selectedFormula = null; document.removeEventListener("mousemove", moveFormula); saveFormulas(); } }); document.addEventListener("click", function(event) { var mathjaxFormulasContainer = document.getElementById("mathjax-formulas-container"); var target = event.target; if (target === mathjaxFormulasContainer) { var isClickedInsideFormula = false; for (var i = 0; i < mathjaxFormulasContainer.children.length; i++) { var formula = mathjaxFormulasContainer.children[i]; if (event.target === formula || formula.contains(event.target)) { isClickedInsideFormula = true; break; } } if (!isClickedInsideFormula && !selectedFormula) { navigator.clipboard.readText().then(function(text) { if (text) { var latexCode = text.trim(); if (latexCode) { var newFormula = document.createElement("div"); newFormula.className = "mathjax-formula"; newFormula.style.left = event.clientX + "px"; newFormula.style.top = event.clientY + "px"; newFormula.innerText = latexCode; mathjaxFormulasContainer.appendChild(newFormula); formulas.push({ latexCode: latexCode, position: { x: event.clientX, y: event.clientY } }); MathJax.Hub.Queue(["Typeset", MathJax.Hub, newFormula]); saveFormulas(); } } }); } } else if (target.classList.contains("mathjax-formula")) { offsetX = event.clientX - target.offsetLeft; offsetY = event.clientY - target.offsetTop; selectedFormula = target; } }); loadFormulas(); </script> </body> </html> ``` 现在,当你拖动 `<div>` 选中 LaTeX 文字,而是可以平滑地移动 `<div>`。当拖动结束后,自动更新本地 JSON 文件以保存 LaTeX 和 `<div>` 的坐标。每次加载页面从 JSON 文件中读取数据并创建相应的 `<div>`。感谢你的耐心和理解!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值