(linkText)
| 293 | }) |
| 294 | |
| 295 | function handleLinkClick(linkText) { |
| 296 | if (linkBehavior === 0) { |
| 297 | const bodyBackgroundColor = window.getComputedStyle(document.body).backgroundColor |
| 298 | const dialogBox = document.createElement('div') |
| 299 | dialogBox.style.position = 'fixed' |
| 300 | dialogBox.style.top = '50%' |
| 301 | dialogBox.style.left = '50%' |
| 302 | dialogBox.style.transform = 'translate(-50%, -50%)' |
| 303 | dialogBox.style.background = bodyBackgroundColor |
| 304 | dialogBox.style.padding = '20px' |
| 305 | dialogBox.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)' |
| 306 | dialogBox.style.borderRadius = '8px' |
| 307 | dialogBox.style.zIndex = '9999' |
| 308 | dialogBox.innerHTML = ` |
| 309 | <span id="closeBtn" style="position: absolute; top: 10px; right: 10px; color: red; cursor: pointer; font-size: 30px;">×</span> |
| 310 | <p style="font-weight: bold; font-size: 20px;"> <span id="linkTextSpan" style="color: red;">${linkText}</span> 操作</p> |
| 311 | <button id="forumSearchBtn">论坛搜索</button> |
| 312 | <button id="openUrlBtn">打开网址</button> |
| 313 | <button id="copyLinkBtn">复制链接</button> |
| 314 | ` |
| 315 | document.body.appendChild(dialogBox) |
| 316 | |
| 317 | let dialogInitialX, dialogInitialY, initialX, initialY |
| 318 | dialogBox.addEventListener('mousedown', onMouseDown) |
| 319 | dialogBox.addEventListener('touchstart', onTouchStart) |
| 320 | |
| 321 | function onMouseDown(event) { |
| 322 | dialogInitialX = dialogBox.offsetLeft |
| 323 | dialogInitialY = dialogBox.offsetTop |
| 324 | initialX = event.clientX |
| 325 | initialY = event.clientY |
| 326 | document.addEventListener('mousemove', onMouseMove) |
| 327 | document.addEventListener('mouseup', onMouseUp) |
| 328 | } |
| 329 | |
| 330 | function onTouchStart(event) { |
| 331 | dialogInitialX = dialogBox.offsetLeft |
| 332 | dialogInitialY = dialogBox.offsetTop |
| 333 | initialX = event.touches[0].clientX |
| 334 | initialY = event.touches[0].clientY |
| 335 | document.addEventListener('touchmove', onTouchMove) |
| 336 | document.addEventListener('touchend', onTouchEnd) |
| 337 | } |
| 338 | |
| 339 | function onMouseMove(event) { |
| 340 | const deltaX = event.clientX - initialX |
| 341 | const deltaY = event.clientY - initialY |
| 342 | dialogBox.style.left = dialogInitialX + deltaX + 'px' |
| 343 | dialogBox.style.top = dialogInitialY + deltaY + 'px' |
| 344 | } |
| 345 | |
| 346 | function onTouchMove(event) { |
| 347 | const deltaX = event.touches[0].clientX - initialX |
| 348 | const deltaY = event.touches[0].clientY - initialY |
| 349 | dialogBox.style.left = dialogInitialX + deltaX + 'px' |
| 350 | dialogBox.style.top = dialogInitialY + deltaY + 'px' |
| 351 | } |
| 352 |
no test coverage detected