Skip to content

Commit

Permalink
2024/07/27 時点の英語版に基づき新規翻訳
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Sep 9, 2024
1 parent 45b6ee6 commit 794982f
Show file tree
Hide file tree
Showing 2 changed files with 207 additions and 0 deletions.
102 changes: 102 additions & 0 deletions files/ja/web/api/window/pagereveal_event/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
title: "Window: pagereveal イベント"
short-title: pagereveal
slug: Web/API/Window/pagereveal_event
l10n:
sourceCommit: e561fa67af347b9770b359ba93e8579d2a540682
---

{{APIRef("HTML DOM")}}{{seecompattable}}

**`pagereveal`** イベントは、ネットワークから新しい文書を読み込んだり、文書([バック/フォワードキャッシュ](/ja/docs/Glossary/bfcache) (bfcache) または[事前レンダリング](/ja/docs/Glossary/Prerender))をアクティブにしたりして、文書が最初にレンダリングされたときに発行されます。

これは、文書間 (MPA) の移動の[ビュー遷移](/ja/docs/Web/API/View_Transitions_API)において、移動の流入ページからのアクティブな遷移を操作する場合に便利です。例えば、遷移をスキップしたり、JavaScript で流入遷移アニメーションをカスタマイズしたりしたい場合などです。

## 構文

このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} 等のメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。

```js
addEventListener("pagereveal", (event) => {});
onpagereveal = (event) => {};
```

## イベント型

{{domxref("PageRevealEvent")}} です。{{domxref("Event")}} を継承しています。

{{InheritanceDiagram("PageRevealEvent")}}

## インスタンスプロパティ

- {{domxref("PageRevealEvent.viewTransition")}} {{ReadOnlyInline}}
- : イベントが発生したときに、アクティブなものがあれば、文書間のナビゲーションにおけるアクティブなビュー遷移を表す {{domxref("ViewTransition")}} オブジェクトを返します。それ以外の場合は `null` を返します。

##

```js
window.addEventListener("pagereveal", async (e) => {
// "from" 履歴項目が存在しない場合は戻る
if (!navigation.activation.from) return;

// アクティブなビュー遷移が存在する場合のみ実行
if (e.viewTransition) {
const fromUrl = new URL(navigation.activation.from.url);
const currentUrl = new URL(navigation.activation.entry.url);

// プロフィールページからホームページに移動
// ~> VT 名を関連するリストアイテムに設定
if (isProfilePage(fromUrl) && isHomePage(currentUrl)) {
const profile = extractProfileNameFromUrl(fromUrl);

// view-transition-name の値をアニメーションする要素に設定
document.querySelector(`#${profile} span`).style.viewTransitionName =
"name";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"avatar";

// スナップショットが採られた後、名前を除去
// そうすることで、次のナビゲーションの準備ができる
await e.viewTransition.ready;
document.querySelector(`#${profile} span`).style.viewTransitionName =
"none";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"none";
}

// プロフィールページに移動
// ~> VT 名をメインタイトルと画像に設定
if (isProfilePage(currentUrl)) {
// view-transition-name の値をアニメーションする要素に設定
document.querySelector(`#detail main h1`).style.viewTransitionName =
"name";
document.querySelector(`#detail main img`).style.viewTransitionName =
"avatar";

// スナップショットが採られた後、名前を除去
// そうすることで、次のナビゲーションの準備ができる
await e.viewTransition.ready;
document.querySelector(`#detail main h1`).style.viewTransitionName =
"none";
document.querySelector(`#detail main img`).style.viewTransitionName =
"none";
}
}
});
```

> [!NOTE]
> このコードの採取元のライブデモは、[List of Chrome DevRel team members](https://view-transitions.netlify.app/profiles/mpa/) を参照してください。
## 仕様書

{{Specifications}}

## ブラウザーの互換性

{{Compat}}

## 関連情報

- [ビュー遷移 API の使用](/ja/docs/Web/API/View_Transitions_API/Using)
- {{domxref("Window.pageswap_event", "pageswap")}} event
105 changes: 105 additions & 0 deletions files/ja/web/api/window/pageswap_event/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
---
title: "Window: pageswap イベント"
short-title: pageswap
slug: Web/API/Window/pageswap_event
l10n:
sourceCommit: e561fa67af347b9770b359ba93e8579d2a540682
---

{{APIRef("HTML DOM")}}{{seecompattable}}

**`pageswap`** イベントは、文書間の移動時、つまり前回表示していた文書がアンロードされようとする際に発行されます。

これは、文書間 (MPA) の[ビュー遷移](/ja/docs/Web/API/View_Transitions_API)において、移動の流出ページからアクティブな遷移を操作する場合に便利です。例えば、遷移をスキップしたり、JavaScript で流出遷移のアニメーションをカスタマイズしたい場合などです。

また、ナビゲーションの種類や、移動元及び移動先文書内の履歴項目にアクセスすることもできます。

## 構文

このイベント名を {{domxref("EventTarget.addEventListener", "addEventListener()")}} 等のメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。

```js
addEventListener("pageswap", (event) => {});
onpageswap = (event) => {};
```

## イベント型

{{domxref("PageSwapEvent")}} です。{{domxref("Event")}} を継承しています。

{{InheritanceDiagram("PageSwapEvent")}}

## インスタンスプロパティ

- {{domxref("PageSwapEvent.activation")}} {{ReadOnlyInline}}
- : 同一オリジン内の移動に関するナビゲーション種別と、移動元および移動先の文書履歴項目を含む {{domxref("NavigationActivation")}} オブジェクトを返します。ナビゲーションのリダイレクトチェーンのどこかにオリジンをまたぐ URL がある場合は、`null` が返されます。
- {{domxref("PageSwapEvent.viewTransition")}} {{ReadOnlyInline}}
- : イベント発生時にアクティブなものがあれば、文書間のナビゲーションにおけるアクティブなビュー遷移を表す {{domxref("ViewTransition")}} オブジェクトを返します。そうでない場合は `null` を返します。

##

```js
window.addEventListener("pageswap", async (e) => {
// アクティブなビュー遷移が存在する場合のみ実行
if (e.viewTransition) {
const currentUrl = e.activation.from?.url
? new URL(e.activation.from.url)
: null;
const targetUrl = new URL(e.activation.entry.url);

// プロフィールページからホームページへ移動
// ~> それぞれの大きな画像とタイトル
if (isProfilePage(currentUrl) && isHomePage(targetUrl)) {
// view-transition-name の値をアニメーションする要素に設定
document.querySelector(`#detail main h1`).style.viewTransitionName =
"name";
document.querySelector(`#detail main img`).style.viewTransitionName =
"avatar";

// スナップショットが採られた後、view-transition-names を除去
// BFCacheにページの状態が保持されたことによる名前の競合を回避
await e.viewTransition.finished;
document.querySelector(`#detail main h1`).style.viewTransitionName =
"none";
document.querySelector(`#detail main img`).style.viewTransitionName =
"none";
}

// プロフィールページへ移動
// ~> クリックしたアイテム
if (isProfilePage(targetUrl)) {
const profile = extractProfileNameFromUrl(targetUrl);

// view-transition-name の値をアニメーションする要素に設定
document.querySelector(`#${profile} span`).style.viewTransitionName =
"name";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"avatar";

// スナップショットが採られた後、view-transition-names を除去
// BFCacheにページの状態が保持されたことによる名前の競合を回避
await e.viewTransition.finished;
document.querySelector(`#${profile} span`).style.viewTransitionName =
"none";
document.querySelector(`#${profile} img`).style.viewTransitionName =
"none";
}
}
});
```
> [!NOTE]
> このコードの採取元のライブデモは、[List of Chrome DevRel team members](https://view-transitions.netlify.app/profiles/mpa/) を参照してください。
## 仕様書
{{Specifications}}
## ブラウザーの互換性
{{Compat}}
## 関連情報
- [ビュー遷移 API の使用](/ja/docs/Web/API/View_Transitions_API/Using)
- {{domxref("Window.pagereveal_event", "pagereveal")}} イベント

0 comments on commit 794982f

Please sign in to comment.