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

推薦する

Vue2で配列の変更を検出できない理由と解決策

目次回避策Vue2.0 で 2 つの配列の変更を監視できないのはなぜですか?ソースコード分析ヴュー3...

Ubuntu 20.04にROS Noeticをインストールする方法

免責事項:プロジェクトでは ROS 環境を使用する必要があるため、これは Ubuntu 20.04 ...

クロスドメイン js フロントエンドの 8 つの実装ソリューション

目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...

Dockerイメージの圧縮と最適化操作

Docker が今日非常に人気がある理由は、主にその軽量性、迅速な展開、およびリソースの利用にありま...

CSS で要素フローティングとクリアフローティングを実装する方法

フローティングの基礎標準ドキュメント フローでは、要素は塊級元素と行內元素の 2 種類に分けられます...

CSS3 で翻訳効果 (transfrom: translate) を実装する例

移動を実現するためにtranslateパラメータを使用しますtranslateX: X 軸に沿って移...

::before/:before と ::after/:after の使用に関する深い理解

パート1: 基礎1. :active や :hover などの疑似クラスとは異なり、これらはすべて疑...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

JavaScript キャンバス テトリス ゲーム

テトリスは非常に古典的な小さなゲームで、私もそれを書いてみました。しかし、できるだけ簡潔で論理的なコ...

Docker Compose ワンクリック ELK デプロイ方式の実装

インストールFilebeat は、より軽量でより安全なため、Logstash-Forwarder に...

tbodyタグの魔法はテーブルコンテンツの表示を高速化します

他の人のウェブページを保存して見たことがあると思いますが、特にdwで開くと、多くのウェブページに&l...

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

Node.js ファイルのコピー、フォルダの作成、その他の関連操作

NodeJS は次のファイルをコピーします:通常、小さなファイルのコピー操作では、ストリーム パイプ...

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...