diff --git a/app/components/collabora/CollaboraViewer.tsx b/app/components/collabora/CollaboraViewer.tsx index a899e7f..b5f9f3c 100644 --- a/app/components/collabora/CollaboraViewer.tsx +++ b/app/components/collabora/CollaboraViewer.tsx @@ -10,7 +10,7 @@ * @encoding UTF-8 */ -import { useRef, forwardRef, useImperativeHandle, useState, useEffect } from 'react'; +import { useRef, forwardRef, useImperativeHandle, useState } from 'react'; import type { CollaboraViewerProps, CollaboraViewerHandle } from './types'; import { useCollaboraConfig, useDocumentReady, useCollaboraUnoCommands } from './hooks'; import { sendUnoCommand } from './Uno'; @@ -54,20 +54,6 @@ export const CollaboraViewer = forwardRef iframeRef.current?.contentWindow || null, }), [unoCommands, isDocumentLoaded, mode]); - // 5. 将 sendUnoCommand 挂载到 window 对象,供调试面板和控制台使用 - useEffect(() => { - if (iframeRef.current?.contentWindow) { - (window as any).sendUno = (cmd: string, args: any = {}) => { - if (iframeRef.current?.contentWindow) { - sendUnoCommand(iframeRef.current.contentWindow, cmd, args); - } - }; - } - - return () => { - delete (window as any).sendUno; - }; - }, [isDocumentLoaded]); // 加载中状态 if (loading) { @@ -101,20 +87,15 @@ export const CollaboraViewer = forwardRef = {}; const raw = (unoArgs || '').trim(); if (raw !== '') { try { - args = JSON.parse(raw); + args = JSON.parse(raw) as Record; } catch (err) { try { // fallback: replace single quotes with double quotes and parse - args = JSON.parse(raw.replace(/'(.*?)'/g, '"$1"')); + args = JSON.parse(raw.replace(/'(.*?)'/g, '"$1"')) as Record; } catch (err2) { console.error('解析 UNO Args 失败:', err2); setUnoResult('Args 解析失败,请使用有效 JSON'); @@ -122,12 +103,22 @@ export const CollaboraViewer = forwardRef {/* UNO 命令测试面板 */} - {/*
+
{unoResult && {unoResult}} -
*/} +
{/* 文档加载提示 */} {!isDocumentLoaded && ( @@ -162,7 +153,8 @@ export const CollaboraViewer = forwardRef )} - {/* Collabora iframe */} + {/* Collabora iframe - tabIndex is needed for keyboard navigation */} + {/* eslint-disable jsx-a11y/no-noninteractive-tabindex */}