fix: resolve copy issue in recognition history interface
This commit is contained in:
		
							
								
								
									
										50
									
								
								worker.js
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								worker.js
									
									
									
									
									
								
							@@ -1135,7 +1135,7 @@ function getHTML() {
 | 
				
			|||||||
    '              <div class="history-header">',
 | 
					    '              <div class="history-header">',
 | 
				
			||||||
    '                <span class="history-time">${timeStr}</span>',
 | 
					    '                <span class="history-time">${timeStr}</span>',
 | 
				
			||||||
    '                <div class="history-actions">',
 | 
					    '                <div class="history-actions">',
 | 
				
			||||||
    '                  <button class="action-btn copy-btn" onclick="event.stopPropagation(); copyHistoryResult(${i})">复制结果</button>',
 | 
					    '                  <button class="action-btn copy-btn" onclick="event.stopPropagation(); copyHistoryResult(${i}, this)">复制结果</button>',
 | 
				
			||||||
    '                  <button class="action-btn delete-btn" onclick="event.stopPropagation(); deleteHistoryItem(${i})">删除</button>',
 | 
					    '                  <button class="action-btn delete-btn" onclick="event.stopPropagation(); deleteHistoryItem(${i})">删除</button>',
 | 
				
			||||||
    '                </div>',
 | 
					    '                </div>',
 | 
				
			||||||
    '              </div>',
 | 
					    '              </div>',
 | 
				
			||||||
@@ -1285,6 +1285,12 @@ function getHTML() {
 | 
				
			|||||||
    '        }',
 | 
					    '        }',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '        const result = recognizeData.result || \'识别失败\';',
 | 
					    '        const result = recognizeData.result || \'识别失败\';',
 | 
				
			||||||
 | 
					    '        // 保存原始文本到属性中,确保 LaTeX 格式完整',
 | 
				
			||||||
 | 
					    '        const formattedResult = result',
 | 
				
			||||||
 | 
					    '          .replace(/\$\$(.*?)\$\$/g, (_, formula) => `$${formula}$$`)',
 | 
				
			||||||
 | 
					    '          .replace(/\$([^$]+)\$/g, (_, formula) => `$${formula}$`);',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    '        resultDiv.setAttribute(\'data-original-text\', formattedResult);',
 | 
				
			||||||
    '        resultDiv.innerHTML = result;',
 | 
					    '        resultDiv.innerHTML = result;',
 | 
				
			||||||
    '        waitForMathJax(() => {',
 | 
					    '        waitForMathJax(() => {',
 | 
				
			||||||
    '          try {',
 | 
					    '          try {',
 | 
				
			||||||
@@ -1414,11 +1420,14 @@ function getHTML() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    '    const copyBtn = document.getElementById(\'copyBtn\');',
 | 
					    '    const copyBtn = document.getElementById(\'copyBtn\');',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '    // 复制结果功能',
 | 
					    '    // 修改复制结果功能,保持完整的 LaTeX 格式',
 | 
				
			||||||
    '    copyBtn.addEventListener(\'click\', async () => {',
 | 
					    '    copyBtn.addEventListener(\'click\', async () => {',
 | 
				
			||||||
    '      const result = resultDiv.textContent;',
 | 
					    '      // 获取原始文本(包含完整的 LaTeX 格式)',
 | 
				
			||||||
    '        toggleBase64.textContent = \'隐藏Base64输入\';',
 | 
					    '      const result = resultDiv.getAttribute(\'data-original-text\');',
 | 
				
			||||||
 | 
					    '      if (!result) return;',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '      try {',
 | 
					    '      try {',
 | 
				
			||||||
 | 
					    '        // 直接复制包含 LaTeX 标记的文本',
 | 
				
			||||||
    '        await navigator.clipboard.writeText(result);',
 | 
					    '        await navigator.clipboard.writeText(result);',
 | 
				
			||||||
    '        copyBtn.textContent = \'已复制\';',
 | 
					    '        copyBtn.textContent = \'已复制\';',
 | 
				
			||||||
    '        copyBtn.classList.add(\'copied\');',
 | 
					    '        copyBtn.classList.add(\'copied\');',
 | 
				
			||||||
@@ -1430,10 +1439,12 @@ function getHTML() {
 | 
				
			|||||||
    '        console.error(\'复制失败:\', err);',
 | 
					    '        console.error(\'复制失败:\', err);',
 | 
				
			||||||
    '      }',
 | 
					    '      }',
 | 
				
			||||||
    '    });',
 | 
					    '    });',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '    // 添加关闭侧边栏的功能',
 | 
					    '    // 添加关闭侧边栏的功能',
 | 
				
			||||||
    '    document.getElementById("closeSidebar").addEventListener("click", () => {',
 | 
					    '    document.getElementById("closeSidebar").addEventListener("click", () => {',
 | 
				
			||||||
    '      sidebar.classList.remove("open");',
 | 
					    '      sidebar.classList.remove("open");',
 | 
				
			||||||
    '    });',
 | 
					    '    });',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '    // Base64 输入相关功能',
 | 
					    '    // Base64 输入相关功能',
 | 
				
			||||||
    '    const base64Input = document.getElementById(\'base64Input\');',
 | 
					    '    const base64Input = document.getElementById(\'base64Input\');',
 | 
				
			||||||
    '    const toggleBase64 = document.getElementById(\'toggleBase64\');',
 | 
					    '    const toggleBase64 = document.getElementById(\'toggleBase64\');',
 | 
				
			||||||
@@ -1496,19 +1507,33 @@ function getHTML() {
 | 
				
			|||||||
    '      }',
 | 
					    '      }',
 | 
				
			||||||
    '    });',
 | 
					    '    });',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '    // 复制历史记录结果',
 | 
					    '    // 复制历史记录结果,保持完整的 LaTeX 格式',
 | 
				
			||||||
    '    async function copyHistoryResult(index) {',
 | 
					    '    async function copyHistoryResult(index, btn) {',
 | 
				
			||||||
 | 
					    '      try {',
 | 
				
			||||||
    '        const history = historyManager.loadHistory(currentToken);',
 | 
					    '        const history = historyManager.loadHistory(currentToken);',
 | 
				
			||||||
    '        const result = history[index]?.result;',
 | 
					    '        const result = history[index]?.result;',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '        if (!result) {',
 | 
					    '        if (!result) {',
 | 
				
			||||||
    '        alert(\'无法复制:结果为空\');',
 | 
					    '          throw new Error(\'无法复制:结果为空\');',
 | 
				
			||||||
    '        return;',
 | 
					 | 
				
			||||||
    '        }',
 | 
					    '        }',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    '      try {',
 | 
					    '        // 使用临时输入框来执行复制',
 | 
				
			||||||
 | 
					    '        const tempInput = document.createElement(\'textarea\');',
 | 
				
			||||||
 | 
					    '        tempInput.value = result;',
 | 
				
			||||||
 | 
					    '        document.body.appendChild(tempInput);',
 | 
				
			||||||
 | 
					    '        tempInput.select();',
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    '        // 尝试使用 execCommand 作为后备方案',
 | 
				
			||||||
 | 
					    '        if (!navigator.clipboard) {',
 | 
				
			||||||
 | 
					    '          document.execCommand("copy");',
 | 
				
			||||||
 | 
					    '          tempInput.remove();',
 | 
				
			||||||
 | 
					    '        } else {',
 | 
				
			||||||
 | 
					    '          // 优先使用 clipboard API',
 | 
				
			||||||
    '          await navigator.clipboard.writeText(result);',
 | 
					    '          await navigator.clipboard.writeText(result);',
 | 
				
			||||||
    '        const btn = event.target;',
 | 
					    '          tempInput.remove();',
 | 
				
			||||||
 | 
					    '        }',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    '        // 更新按钮状态 - 使用传入的按钮元素',
 | 
				
			||||||
    '        btn.textContent = \'已复制\';',
 | 
					    '        btn.textContent = \'已复制\';',
 | 
				
			||||||
    '        btn.classList.add(\'copied\');',
 | 
					    '        btn.classList.add(\'copied\');',
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -1516,9 +1541,12 @@ function getHTML() {
 | 
				
			|||||||
    '          btn.textContent = \'复制结果\';',
 | 
					    '          btn.textContent = \'复制结果\';',
 | 
				
			||||||
    '          btn.classList.remove(\'copied\');',
 | 
					    '          btn.classList.remove(\'copied\');',
 | 
				
			||||||
    '        }, 2000);',
 | 
					    '        }, 2000);',
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    '        return true;',
 | 
				
			||||||
    '      } catch (err) {',
 | 
					    '      } catch (err) {',
 | 
				
			||||||
    '        console.error(\'复制失败:\', err);',
 | 
					    '        console.error(\'复制失败:\', err);',
 | 
				
			||||||
    '        alert(\'复制失败,请手动复制\');',
 | 
					    '        alert(\'复制失败: \' + err.message);',
 | 
				
			||||||
 | 
					    '        return false;',
 | 
				
			||||||
    '      }',
 | 
					    '      }',
 | 
				
			||||||
    '    }',
 | 
					    '    }',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user