_html/css_WEB-ITnose によって引き起こされた思考

WBOY
リリース: 2016-06-24 11:47:55
オリジナル
950 人が閲覧しました

少し前、モバイルプロジェクトで、 でクリックイベントをバインドしてフォームを送信していましたが、フォームの情報は比較的機密であったため、ポスト同期送信メソッドが使用されていました。 。その後、邪悪な PM が「このボタンは一番下に固定した方が良い」と言い、position:fixed で一番下に固定されました。ここで問題が発生します。iOS では、仮想キーボードがページの上部に表示されます。その結果、キーボードが格納されると、下部に表示されていたボタンが下部ではなく中央に表示されます。極端な条件下では入力ボックスをブロックして入力できなくなることもあります)、画面がスクロールするのに合わせてスクロールします(パフォーマンスは絶対に似ています)、背の高いAppleは本当に不正です。

どうする? 2 つのオプションがあります。1 つは、スクロール時に位置を動的に計算することであり、位置をリアルタイムで監視する必要があるため、仮想キーボードが開いているか閉じているかを監視することができないため、ボタンの位置が変化する可能性があります。目的の効果を実現するには、フォーカス イベントとブラー イベントをフォーム要素にバインドすることによってのみ変更できます。こうしてバラバラは再び完成した。

完了後、テストを開始したところ、入力要素にフォーカスがあるときに送信ボタンをクリックしても機能しないことがわかりました。 ! !また注文します、わかりました。 。 。

理由は、blurイベントによりclickイベントが実行できなくなるからです。 。 。

よし、私は変わり続けます。

ブラーイベントはクリックイベントの実行を妨げますが、タッチイベントの実行は妨げませんので、クリックをタップに変更することを考えました。それは実際に動作します。二度クリックする必要はもうありません。

できました、私は誇らしげに微笑みます、とても賢いです。

balabalaはオンラインになりました。

オンラインにアクセスしてすぐに、提出できないことがわかりました。 。 。一定の確率でリクエストがキャンセルされることがあります。 。 。

g g g あらゆる種類の Google で理由が見つかりませんでした。質問はどこにありますか?クリックには問題ありませんが、タップに問題があるため、タッチイベントの実行順序を確認しました。これはおおよそ次のとおりです

そこで、mouseupをテストしたところ問題はなく、touchendも問題があり、タップしました。はい、タップ イベントを使用すると、ハンドラーは 100 ミリ秒遅れますが、$('*Form').submit() は再び正常に送信できるようになります。サブミット実行のタイミングに問題があることが判明しました。

デバッグを続けて、歴史に残されたバグや落とし穴を見つけてください。

最終的に
に到達しました。ボタン クリック イベントが実行されると、ハッシュをリクエストする前に submit が実行され、リクエストはまだ戻ってません、ハッシュの変更により同期送信がキャンセルされました、、、送信実行前に諸事情によりハッシュが変更されていればスムーズに送信できます

ということで、put
に変更します。最終的には問題ありません。

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