iOS8内のスクロールの問題と無効化されたJavascriptについてたくさん読みました。しかし、私は他のバグのように私には思える奇妙な行動に直面しています。
コルドバのphonegap内で実行されているhypridWebアプリがあります。すべてが正常に機能し、スクロールリスナーは使用しません。どういうわけか、アプリをバックグラウンドにプッシュして再びフォアグラウンドにした後(これまでのところ、なぜそれが発生するのかわかりませんでした)、すべてのタッチイベントのタイムスタンプが10秒間遅れます。
このタイムスタンプをキャプチャして機能を処理するsenchatouchフレームワークを使用しています。
他の誰かが同じ行動に直面しているか、またはすでにこれに対する解決策を持っているかどうかを聞いてうれしいです。その間、私はより多くのテストを行い、この投稿をより詳細な情報で更新します。
ありがとう
更新:
document.addEventListener('touchstart', function(e){
console.log('touchdelay: ' + (Date.now() - e.timeStamp));
}, false);
//returns:
//touchdelay: 11699655
したがって、私が今行ったこのテストでは、イベントが3時間以上前に発生したことがわかります。
UPDATE2:モバイルサファリを開き、任意のページをロードし、電話をスリープモードにし、15秒間待って、サファリを開くことで、iPhone5sでエラーを再現できます。
アップルのバグシステムに関するバグレポートを開きました。
この質問は最新ではない可能性があるため、この問題に関する次の記事を読むことをお勧めします。
https://w3c.github.io/hr-time/#time-origin
W3Cの定義によれば、すべての主要なブラウザがタイムスタンプの動作を変更する可能性があります。クロームもバージョン49以降ですでに使用されています。タイムスタンプはエポックではなく、サイトを最後に更新した時点を表します。
https://developers.google.com/web/updates/2016/01/high-res-timestamps?hl=en
したがって、イベントのタイムスタンプはエポックタイムであると慎重に信じてください。
両方と互換性を持たせるために、アプリにイベントハンドラーを追加する前に、同様のスニペットを追加できます。
var dateNowAtLoad = Date.now();
ontouchmove = (e) => {
if (e.timeStamp > dateNowAtLoad) {
// epoch timestamp -> old path
} else {
// high-res timestamp -> new path
}
}
または、この関連プラグインをチェックアウトします。
https://github.com/majido/high-resolution-timestamp-polyfill/blob/master/translate-timeStamp.js
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加