0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

jQuery3.x系でjquery.simplemodal.jsを動かす

Last updated at Posted at 2017-09-06

はじめに

簡単なモーダルウインドウを実装する際に便利な「jquery.simplemodal.js」というjQueryプラグインがあるのですが、こいつがjQuery3系ではそのまま動かないのでとりあえず動くようにしてみたという話。

背景

数年前に作成されていた「jquery.simplemodal.js」を使ってモーダルウインドウを表示していた画面にて、読み込んでいたjQueryのバージョンが1.5.2とかなり古く、XSS対策などもされていないバージョンということで、セキュリティ上の大きな問題がありました(それ以外にも沢山あるけど)。

とりあえずXSS対策を行うだけなら1.6.3以降のjQueryを使えばいいだけなのですが、既にjQueryの1.x系は新規機能の追加も終了しており、また、今後該当の画面を改修する際に古いjQueryを使っていることがネックにならないかという懸念がありましたので、最新バージョンである3系で動かすことができないかトライしてみることにしました。

まずjQuery1.x系の最終バージョンで動くようにする

http://www.buildinsider.net/web/jqueryref/051
ここを参考に、まず1.x系の最終バージョンで動くように修正。
と言っても、「jquery.simplemodal.js」の最新バージョン(1.4.4)を導入していれば、
「jquery.simplemodal.js」自体に特別な手を入れる必要はありません。

(9/7追記)
jQueryの.browser()がjQuery1.9で廃止された影響で、
simplemodal.jsの最新バージョン以外ではjQuery1.9以降動作しなくなるため。

同じ画面内でjQueryを使っている箇所で修正が必要なところがあれば都度対応します。
上記の記事にもありますが、こちらが参考になるかと。
https://github.com/jquery/jquery-migrate/blob/1.x-stable/warnings.md

修正完了後、1.x系の最新バージョンで動作することを確認。

いよいよjQuery3.x系の最新バージョンで動くようにする

1.x系での最新バージョンで動くことが確認できれば、いよいよ3.x系への対応です。
「jquery-migrate-3.0.0.min.js」をincludeしてみればすぐわかるのですが、
「JQMIGRATE: jQuery.fn.bind() is deprecated」というエラーが表示されます。

これはjQuery 3.x系でbind()がremovedされたことが原因です。
なので、「jquery.simplemodal.js」内の".bind()"と記載されている箇所を".on()"に置き換えます。
独自に手を入れていなければ、これだけで動くはずです。
(少なくともsimplemodal起因の問題はなくなるはず)

(9/7追記)
コメント欄で削除ではなく非推奨になったとご指摘いただきました、
ありがとうございます。ただ、将来的には間違いなく削除されると思うので、
onに置き換えられるなら置き換えておいた方がいいのでしょうね。

試しに一旦onメソッドをbindに戻してみたところ正常に動くように。
最初に確認した環境がnoConflict()を用いて、
jQuery1.x系と2.x系を両方読み込んで無理やり動かしていた環境だったので、
その辺が悪影響を及ぼしていたのかもしれませんね・・・・・・

おわりに

まぁとりあえず当面はこれで何とかなるけど、
「jquery.simplemodal.js」ももう4年くらい更新されてないプラグインですし、
今後のことを考えると他の方法でモーダル実装することを考えたほうがいいのかもしれないですね。

あとjQueryのbind()って名前、今一ピンと来なかったんですが、
on()に置き換わったことで大分直感的にわかりやすくなった印象。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?