diff --git a/ora/Core/BrowserEngine/Scripts/OraBrowserScripts.swift b/ora/Core/BrowserEngine/Scripts/OraBrowserScripts.swift index 35b5690f..2bc9dc82 100644 --- a/ora/Core/BrowserEngine/Scripts/OraBrowserScripts.swift +++ b/ora/Core/BrowserEngine/Scripts/OraBrowserScripts.swift @@ -93,16 +93,19 @@ enum OraBrowserScripts { post('linkHover', url || ""); } + function currentAnchor(node) { + return node && node.closest ? node.closest('a[href]') : null; + } + function onMouseOver(event) { - const anchor = event.target.closest && event.target.closest('a[href]'); + const anchor = currentAnchor(event.target); postHover(anchor ? anchor.href : ''); } function onMouseOut(event) { - const related = event.relatedTarget; - if (!related || !event.currentTarget.contains(related)) { - postHover(""); - } + const from = currentAnchor(event.target); + const to = currentAnchor(event.relatedTarget); + if (from !== to) postHover(to ? to.href : ''); } document.addEventListener('mouseover', onMouseOver, true); diff --git a/ora/Features/Browser/Views/BrowserWebContentView.swift b/ora/Features/Browser/Views/BrowserWebContentView.swift index 3ea5c6e8..61049842 100644 --- a/ora/Features/Browser/Views/BrowserWebContentView.swift +++ b/ora/Features/Browser/Views/BrowserWebContentView.swift @@ -88,6 +88,7 @@ struct BrowserWebContentView: View { LinkPreview(text: hovered) } } + .animation(.easeOut(duration: 0.12), value: tab.hoveredLinkURL) } else { ZStack { Rectangle().fill(theme.background)