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 の初期パスワードを忘れた場合の対処方法

推薦する

require/import キーワードを使用して v-for ループでローカル画像をインポートするいくつかの方法

目次問題の説明方法 1 (バックエンドが画像 URL を返す)方法 2 (フロントエンドで requ...

Javascript 構造化代入の詳細

目次1. 配列の分解2. オブジェクトの分解3. 不完全な解体4. 分割代入を使用して変数交換を実装...

Docker を使用した nextcloud パーソナル ネットワーク ディスクの構築に関するチュートリアル

目次1. はじめに2. 導入環境ツール4. 展開プロセス要約する1. はじめにNextcloud は...

JavaScript ベースで年・月・日の 3 階層連携を実現

この記事では、年、月、日の3段階のリンクを実現するためのJavaScriptの具体的なコードを参考ま...

Dockerを使用してクローンリポジトリを使用してGitイメージを構築する

概要私は 1 年以上 Docker を使用しています。最近、サービスをすばやくオーケストレーションし...

Html+CSS 描画三角形アイコン

まずはレンダリングを見てみましょう: XML/HTML コードコンテンツをクリップボードにコピー&l...

WeChatアプレットはシンプルなサイコロゲームを実装します

この記事では、サイコロゲームを実装するためのWeChatアプレットの具体的なコードを参考までに共有し...

Linux での mysql および mysql.sock のインストールに関する問題

最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...

echartsマップカルーセルハイライトを解決するための記事

目次序文やることリストやるだけ地図を準備するインスタンスをバックアップ用に保存するタイマーカルーセル...

js での typeof の使い方を理解するための記事

目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...

Linux yum コマンドを使用して mysql8.0 をインストールする方法の詳細なチュートリアル

1. 設置前によく掃除する rpm -pa | grep mysql または rpm -qa | g...

JavaScript を使用してセカンダリ メニューを作成する

この記事では、セカンダリメニュー効果を実現するためのJavaScriptの具体的なコードを参考までに...

Web ページでフラッシュの wmode 属性を使用する方法をご存知ですか?

Web 開発を行う際に、フラッシュがページ内の要素をブロックする状況に遭遇することがあります。フラ...

MySQLデータベースに他のIPアドレスからアクセスできない問題の解決策

序文先ほどのプロジェクトを参考にすると、環境は整いました。プロジェクトの準備と検証の段階で、問題が発...

TeamCenter12 にログインする際の 404/503 問題の解決方法

TeamCenter12はアカウントのパスワードを入力し、ログインをクリックすると、404または50...