Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

Vue はシェイク機能を実装します (ios13.3 以降と互換性があります)

最近、shake.jsを使用して、shakeに似た機能を作成しました。ただし、shake機能はios13.3より前のバージョンでトリガーできるため、それ以降のバージョンでは互換性が必要です。ユーザーが手動でクリックして、アクションや指示の権限を承認できるように、ポップアップボックスを作成する必要があります。 (https プロトコルが必要です)

<van-popup v-model="isTip" class="popInfo" :close-on-click-overlay="false">
 <div class="mainBody">
 <h3 class="systemTip">ヒント</h3>
 <div class="確認">
 iOS システムはアクションと指示にアクセスするための許可を手動で取得する必要があるため、ゲームが正常に進行するように、アクセスプロンプトで [許可] をクリックしてください。
 </div>
 </div>
 <button class="bottomButton" @click="handleInit">
 了解しました</button>
</バン-ポップアップ>

シェイク

//shake.jsを導入する
作成された(){
 this.initShake()
 定数isAction = JSON.parse(localStorage.getItem('getAction'))
 var ua = navigator.userAgent.toLowerCase();
 if (ua.indexOf("Mac OS X のような") > 0) {
 var reg = /os [\d._]*/gi;
 var verinfo = ua.match(reg);
 var version = (verinfo+"").replace(/[^0-9|_.]/ig,"").replace(/_/ig,".");
 if (parseFloat(バージョン) >= 13.3 && !isAction){
 localStorage.setItem("getAction",true)
 this.isTip = true
 }
 }
},
方法:{
 initShake(){
 this.myShakeEvent = 新しいシェイク({
 しきい値: 15、// シェイクしきい値タイムアウト: 1000 // イベント頻度、オプションの値});
 this.myShakeEvent.start();
 window.addEventListener('shake', xx);
 },
 ハンドル初期化(){
 this.isTip = false
 this.ios13granted()
 },
 ios13granted() {
 if (typeof DeviceMotionEvent.requestPermission === 'function') {
 DeviceMotionEvent.requestPermission().then(permissionState => {
 権限状態が「許可」の場合{
 this.initShake() //Shake} else if(permissionState === 'denied'){// 開いたリンクは https で始まっていません alert("現在の IOS システムでは、アクションと指示へのアクセスが拒否されています。WeChat を終了し、イベント ページに再度アクセスして権限を取得してください。または、抽選バケットを直接クリックしてイベントに参加してください")
 }
 }).catch((エラー) => {
 アラート("デバイスの向きやモーションへのアクセスを要求するには、ユーザーのジェスチャーが必要です")
 })
 } それ以外 {
 // 通常の iOS 13 以降以外のデバイスを処理する alert("通常の iOS 13 以降以外のデバイスを処理する")
 }
 },
}

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatシェイク機能を実装するためのJavaScript+H5
  • JSを使ったWeChatシェイクの原理の解析
  • JavaScript HTML5 でのシェイク機能の実装

<<:  Windows (x86、64 ビット) で MySQL 5.7.17 無料インストール バージョンをアップグレードするための詳細なチュートリアル

>>:  MAC 上の MySQL の初期パスワードを忘れた場合の対処方法

推薦する

フォームから Vue ElementUI を使用してログイン効果を実装する例

目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...

Dockerコンテナを使用してホストネットワークにアクセスする方法

最近、nginx をリバース プロキシとして使用し、docker で nginx を実行するシステム...

MySQL コマンドを使用してインデックスを作成、削除、およびクエリする方法の紹介

MySQL データベース テーブルでは、インデックスを作成、表示、再構築、削除できるため、クエリ速度...

高度な JavaScript フロントエンド開発でよく使用されるいくつかの API の例の詳細な説明

目次ミューテーションオブザーバーAPI特徴インターセクションオブザーバーAPI例えば画像の遅延読み込...

MySQL Innodbインデックスの原理の詳細な説明

導入振り返ってみると、4年前、私がMySQLのインデックスについて学んでいたとき、先生はインデックス...

Docker Gitlab+Jenkins+Harborは永続的なプラットフォーム運用を構築します

CI/CD の概要CIワークフロー設計Gitコードバージョン管理システムはコマンドラインでのみ管理で...

MySQL ファントムリードとその排除方法の詳細な説明

目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...

リフレッシュリダイレクトを実現する HTML ヘッドタグメタ

コードをコピーコードは次のとおりです。 <html> <ヘッド> <m...

HTML テーブル マークアップ チュートリアル (1): テーブルの作成

<br />これは 123WORDPRESS.COM が提供する一連のチュートリアルです...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

テーブルの幅を固定して、テキストによって幅が変わらないように設定

ページ内のテーブルの幅を width="600px" に設定した後も、幅が固定さ...

img 画像タグに alt 属性を付与する必要がありますか?

img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...

CSS のフローティング サンプル コードをクリアする方法

概要この記事のフレームワーク図は次のとおりです。 1. フローティングとは一体何でしょうか? W3s...

MySQLインデックスに関する詳細を共有する

数日前、同僚からMySQLのインデックスについて質問を受けました。大体わかっているのですが、まだ練習...

ネイティブJSで禁止すべきメソッドの記述

目次ブロックレベル関数オブジェクトのプロトタイプを直接変更すると呼び出された人発信者評価ブロックレベ...