外部リンクであるかを判定してtarget属性に_blankを設定することで、
外部リンクを新しいタブで開くようにします。
手順
src/scripts/link.jsというファイルを作成し、以下のように編集する。
const isExternalLink = (link) => {
return link.hostname !== location.hostname;
}
const links = document.getElementsByTagName('a');
for (const link of links) {
if (isExternalLink(link)) {
link.setAttribute('target', '_blank');
link.setAttribute('rel', 'noopener noreferrer');
}
}
以下のようにlink.jsをインポートすることで、外部リンクが新しいタブで開くようになる。
---
const { pageTitle } = Astro.props;
---
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{pageTitle}</title>
</head>
<body>
<slot />
<script>
import '../scripts/link.js';
</script>
</body>
</html>