ジョブの管理ページを初めて入力すると、ほとんどの場合、正常に動作し、ポップアップが正常に起動されるリンクボタンがあります。ページに戻るとリンクボタンをクリックしてポップアップを起動できません
<a href="#dialogCompletion" data-rel="popup" data-position-to="window" data-transition="pop" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-icon-calendar ui-btn-icon-left ui-btn-b" aria-haspopup="true" aria-owns="dialogCompletion" aria-expanded="false">Job Complete</a>
クリック、私のポップアップが起動したら、日付やボタンを提示し、私はボタンをクリックし、日付を変更することができ、JavaScript関数が呼び出され、location.href
は特別な値で同じページを再読み込みしていると呼ばれていますクエリ文字列に、私のデータベースが更新されます。
しかし、私は段階の非常に一般的なセットに従うとき、ボタンが機能しないと、ポップアップが開きません。
- 私の管理ジョブのページ上のボタンをクリックし、ポップアップが開き、日付を設定ポップアップのボタンをクリックすると、ページのリロード、DBの書き込みが発生します。
- マイアイコンをクリックすると、メインページに移動します。
- メインページのナビゲーションリンクをクリックして、[ジョブの管理]ページ(以前はどこですか)に戻ります。
- ポップアップをトリガーするボタンをクリックしますが、ポップアップは表示されません。
ページをリフレッシュすると、すべて元の状態に戻り、同じボタンをクリックするとポップアップが開きます。または、メインページに移動してブラウザをリロードし、Manage Jobに移動しても機能します。しかし、JQMのページ遷移の途中で、私のボタンのクリック可能性を壊してポップアップを起動できない何かが起こっているに違いありません。任意の時点で強制ページを更新すると、そのページが消去されて問題が解決され、ポップアップをもう一度正常に開始できます。
これは本当に悪いことです。ユーザーに「ボタンがクリックされないたびにページをリロードする」とは言えないからです。問題を確認する手順は、非常に一般的な手順であり、エッジの場合はありません。
私の気づいた点:リンクボタンのaria-expanded
属性が「false」の場合、ボタンをクリック(実際に指を押した状態)してポップアップが開きます。しかし、ポップアップが起動しない場合(上記の手順を実行するごとに)、aria-expanded
属性が「true」に設定されていることがわかりました。だから最初は私は修正が簡単なハックだと思った。 jqueryを使ってその属性をfalseに設定するだけで動作します。しかし、それはしません。 Chromeの開発ツールでは、私はそれをfalseに設定し、それをクリックしようとしましたが、成功しませんでした。
これは本当にJQMのバグのようですが、それはそのような共通/コア機能であるため怖いです。しかし、私はこの仕事をするためにできるあらゆるタイプのハック/フィックスについて知ってうれしいです。前もって感謝します。私は見つけることができる唯一のソリューションは、アンカー要素にAJAXを無効にすることでした
あなたは[ページナビゲーション](http://demos.jquerymobile.com/1.4.5/navigation/)についてのJQMドキュメントを読んだことがありますか? – deblocker
はい。なぜ私は別のページから移動したので、ポップアップを引き起こすlinkbuttonsが壊れている/無効にする必要がある理由はありません。これは、多くのアプリにとって非常に一般的なケースです。 – HerrimanCoder