假设我有一个名为linksToAnotherPage
的函数,它接收到一个href。我如何检查该href是否将您带到另一个页面,或者它是否是tel:
、mailto:
、#anchor-link
等,但不会将您带到另一个页面?
function linksToAnotherPage(href) {
....
}
linksToAnotherPage('tel:123-456-7890') -> // false
linksToAnotherPage('contact') -> // true
--
// does not link to another page
<a href="tel:123-456-7890">123-456-7890</a>
<a href="mailto:email@example.com">Send Email</a>
<a href="#start-now">Start Now</a>
// links to another page
<a href="contact">Send Email</a>
--
更新:以下是我根据收到的答案提出的当前解决方案
function isInteractiveHref (href) {
return (
href.startsWith("mailto:") || href.startsWith("tel:") ||
href.startsWith("#")
)
}
isInteractiveHref(props.href) ? (
<Link href={props.href}>
<a>Does not link to another page</a>
</Link>
) : <Link href={'/' + props.href}>
<a> Links to another page</a>
</Link>
2条答案
按热度按时间ztmd8pv51#
你可以只使用一个简单的if语句,有有限的类型的链接,将转到另一个页面:
所以,我认为这个功能可以帮助:
5kgi1eie2#
您可以在此处找到可能需要额外匹配的URL前缀列表:https://en.wikipedia.org/wiki/List_of_URI_schemes