ホームページ > ウェブフロントエンド > フロントエンドQ&A > Vue でウィンドウを閉じるポップアップ プロンプトを実装する方法

Vue でウィンドウを閉じるポップアップ プロンプトを実装する方法

PHPz
リリース: 2023-04-17 13:37:05
オリジナル
4405 人が閲覧しました

フロントエンド テクノロジの継続的な開発と適用により、Vue はますます多くのフロントエンド エンジニアの最初の選択肢となりました。ただし、Vue を使用してページを開発するプロセスにおいて、適切なプロンプトがないと、ユーザーに不快な体験を与える可能性があります。

Web アプリケーションでは、ユーザーがブラウザの閉じるボタンを押す、ブラウザのショートカット キーを押す、プロセスを終了するなど、さまざまな状況でウィンドウを閉じることができます。ウィンドウを閉じる処理を行わずに Vue コンポーネントを直接使用してページを開発すると、閉じるときにプロンプ​​トが表示されず、ユーザー エクスペリエンスに影響を与える可能性があります。

この問題を解決するには、Vue にウィンドウを閉じるプロンプトを追加する必要があります。次に、Vue でウィンドウを閉じるポップアップ プロンプトを実装する方法を紹介します。

1. ウィンドウを閉じるイベント リスナーを追加する

Vue コンポーネントでは、次に示すように、まず mounted フック関数を通じてウィンドウを閉じるイベント リスナーを追加する必要があります。 :

mounted () {
  window.addEventListener('beforeunload', this.handleWindowClose)
}
ログイン後にコピー

このうち、beforeunload イベントは、ウィンドウが閉じようとしているときにトリガーされます。イベント処理関数 handleWindowClose では、対応するプロンプト処理を実行できます。

2. ウィンドウ終了プロンプトの処理

イベント処理機能では、必要に応じてさまざまなプロンプト処理を構築できます。たとえば、ユーザーがフォームを編集しているときにウィンドウが閉じている場合、変更を保存するかどうかを尋ねる必要があります。 window.confirm を使用してダイアログ ボックスをポップアップ表示できます。コードは次のとおりです。

handleWindowClose (event) {
  if (formIsDirty()) {
    event.preventDefault()
    event.returnValue = ''
    if (window.confirm('是否保存修改?')) {
      saveForm()
    }
  }
}
ログイン後にコピー

上記のコードでは、formIsDirtysaveForm はカスタマイズされています フォームが変更されたかどうかを判断し、保存するために使用される関数。 event.preventDefault() および event.returnValue = '' は、システムのデフォルトのウィンドウが閉じる動作を防止し、現在のプロンプト ボックスが正常にポップアップできるようにするために使用されます。

変更の保存を確認するだけでなく、他のプロンプトを追加することもできます。たとえば、未保存のデータがある場合、ユーザーはページを離れるかどうかを確認するように求められます。コードは次のとおりです。

handleWindowClose (event) {
  if (formIsDirty()) {
    event.preventDefault()
    event.returnValue = ''
    if (window.confirm('您有未保存的数据,是否确认离开?')) {
      // 不做处理,直接关闭窗口
    }
  }
}
ログイン後にコピー

上記のコードでは、何も処理せずにウィンドウを直接閉じており、ユーザーは手動でデータを保存する必要があります。

さらに、カスタマイズされたプロンプト ボックスを使用して、よりわかりやすいプロンプト コンテンツを提供することもできます。たとえば、Vue プラグイン vue-snotify を使用すると、弾幕のようなプロンプト ボックスを実装できます。コードは次のとおりです。

import Snotify, { SnotifyPosition } from 'vue-snotify'

Vue.use(Snotify)

// ...

handleWindowClose (event) {
  if (formIsDirty()) {
    event.preventDefault()
    event.returnValue = ''
    this.$snotify.confirm('您有未保存的数据,是否确认离开?', {
      position: SnotifyPosition.rightTop,
      closeOnClick: false,
      buttons: [
        { text: '否', action: () => {}},
        { text: '是', action: () => window.close()}
      ]
    })
  }
}
ログイン後にコピー

上記のコードでは、vue-snotify プラグインを導入し、this.$snotify.confirm メソッドを呼び出しました。処理関数を使用して、カスタム確認ボックスをポップアップ表示します。フレームワークには、実情に合わせて設定できる豊富な設定項目が用意されています。

概要

上記は、Vue でウィンドウを閉じるポップアップ プロンプトを実装する方法です。ウィンドウを閉じるイベントのリスナーを追加し、イベント処理関数で対応するプロンプト処理を実行することで、Web アプリケーションのユーザー エクスペリエンスを向上させることができます。

もちろん、特別なニーズがある場合は、ウィンドウを閉じるプロンプトのスタイルをカスタマイズし、Ajax やその他の方法で未完了の操作を保存して、より高度なユーザー プロンプト エクスペリエンスを実現することもできます。

以上がVue でウィンドウを閉じるポップアップ プロンプトを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート