jQuery のアップグレード
Jira 8.0 には jQuery 2.2.4 が組み込まれます。当社でアップグレードを実施した際に、アドオンを簡単に更新するためのいくつかのベスト プラクティスを作成しました。以降の変更点に加えて、詳細情報が必要な方のために、jQuery の公式アップグレード ガイドへの便利なリンクもいくつか掲載しています。
考慮事項
バージョン
jQuery をバージョン 1.7.2 から 2.2.4 にアップグレードしています。また、アップグレードを簡素化するために、jQuery 移行プラグイン 1.4.1 も組み込む予定です。この移行プラグインによって非推奨の機能を使用できるようになるため、ご利用のコードはアップグレード後の jQuery でも適切に実行されます。ただし、これは一時的な回避策として見なし、コードを完全に移行することをおすすめします。移行プラグインは次のリリースで削除する予定です。
セキュリティ上の問題
Jira にバンドルされる jQuery 2.2.4 には、次のセキュリティ問題に対応するための 2 つの追加セキュリティ パッチが適用されます。
変更履歴とアップグレード ガイド
すべての重要な変更について理解し、不明点がある場合に正確な情報を入手するために、公式の jQuery 変更履歴およびアップグレード ガイドを確認しておくことをおすすめします。
- 変更履歴: すべての jQuery バージョンの変更点の一覧が含まれます。
- jQuery 1.9 アップグレード ガイド: ほとんどの変更は jQuery 1.9 に含まれており、このアップグレード ガイドでそれらの詳細を確認できます。さらに、 jQuery 1.9 のブログ記事と移行プラグイン1.x も確認できます。
非推奨のリソースについての警告
jQuery のアップグレード後は、非推奨の関数を使用しようとすると、移行プラグインによって通知メッセージと警告が表示されます。このような関数は引き続き利用可能で動作しますが、将来的には削除する予定であるため、サポート対象の機能に切り替えることをおすすめします。警告は、非推奨の関数が使用されている箇所を確認するために活用できます。
これまでの EAP では初期設定で警告が有効になっていましたが、EAP ベータ版では無効にしました。これらの警告を再表示するには、jquery-migrate-logging
モジュールを有効にします。
- > [アドオン] > [アプリの管理] に進みます。
jquery
プラグインを検索します。jquery-migrate-logging
モジュールを有効化します。
変更
以降の表では、もっとも重要な変更について説明します。すべての変更を網羅した一覧ではないため、jQuery アップグレード ガイドと合わせて確認するようにしてください。
埋め込みの課題コレクターでの jQuery パスの変更 |
---|
課題コレクターでの jQuery へのパスを変更しました。具体的な対象範囲は、Jira の外部での課題コレクターの埋め込みを許可していたコードです。過去に作成した課題コレクターで生成されたコードを使用して埋め込んでも、コードが正しいものではなくなっているため、動作しません。 |
Deferred.then |
---|
アップグレード前は、then メソッドは一定の範疇で Promise/A 仕様に従っており、done や fail にハンドラーを追加するための糖衣構文として使用されていました。現在の動作は Promise/A+ 仕様と類似し、値の変更やメソッドチェーンを行うことができます。 ドキュメント: deferred.then()、改善リクエスト、コミット履歴 |
isResolved、isRejected |
---|
このメソッドは deferred.state() に置き換えられました。新しいメソッドは、pending、resolved、または rejected のいずれかの状態を返します。 ドキュメント: deferred.state()、deferred.isRejected()、deferred.isResolved() |
セレクターとカンマ |
---|
jQuery セレクターでは末尾にカンマを使用できません。 |
.closest(selectors) |
---|
ドキュメント: closest(selectors)、jQuery 1.8 ブログ |
$.ajax{async:false} |
---|
同期リクエスト (SJAX) には Deferred ではなくコールバックを使用する必要があります。 ドキュメント: jQuery.ajax()、改善リクエスト、代替手順 |
state@syntheticClick |
---|
アップグレード前は、ラジオ/チェックボックス エレメントのクリックでトリガーされたイベントは、これらのエレメントがユーザーの操作とは逆の状態にあるとみなしていました。これは、ユーザーが開始した操作と同じ選択状態を反映するように修正されました。 ドキュメント: バグ修正、jQuery 1.9 アップグレード ガイド |
events@.fn.data |
---|
jQuery.fn.data() がデータ項目の修正のたびにイベント (getData、setData、changeData) を発生させることはなくなりました。 ドキュメント: バグ修正 |
namespace@.fn.data |
---|
jQuery.fn.data() は名前空間で指定されたデータをサポートしません。 ドキュメント: バグ修正、jQuery 1.9 アップグレード ガイド |
$.proxy |
---|
jQuery.proxy が誤ったコンテキストで呼び出された場合、コンテキストを保存します。 ドキュメント: 機能リクエスト、 jQuery 1.9 アップグレード ガイド |
$.contains |
---|
最初の引数は、jQuery オブジェクトではなく DOM 要素にする必要があります。 |
$.uuid |
---|
このメソッドは削除されました。 ドキュメント: jQuery 1.9 アップグレード ガイド |
$.offset.bodyOffset |
---|
このメソッドは削除されました。 ドキュメント: 代替メソッド: offset() |
$.browser.version |
---|
webkit ブラウザ バージョンの変更を認識するための方法です。webkit の場合、 |
$.fn.width |
---|
要素の幅の変更を計算する方法です。jQuery 2.2.4 は、コンテンツを持たないインライン要素の幅 (%) 値についてさまざまな値を返すため、これらの要素の幅を確認する際は特に注意が必要です。 ドキュメント: width() |
$.focus() |
---|
|