diff --git a/components/react-menu/src/LinkSubMenu.tsx b/components/react-menu/src/LinkSubMenu.tsx index bb69434da..712d245f2 100644 --- a/components/react-menu/src/LinkSubMenu.tsx +++ b/components/react-menu/src/LinkSubMenu.tsx @@ -8,6 +8,8 @@ import { MenuButton } from './Icon'; import * as Icons from './Icons'; import { MenuGroup } from './MenuGroup'; +const isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i + export function LinkSubMenu({ getIsTop = () => true }) { const view = useEditorViewContext(); const result = link.queryLinkAttrs()(view.state); @@ -81,7 +83,9 @@ function LinkMenu({ hint="Visit" onMouseDown={(e) => { e.preventDefault(); - window.open(href, '_blank'); + if (!isJavaScriptProtocol.test(href)) { + window.open(href, '_blank'); + } }} >