読者です 読者をやめる 読者になる 読者になる

javascript http://blog.jquery.com/2012/06/22/jquery-1-8-beta-1-see-whats-coming-and-going/:title=jquery1.8 beta 1が出ました

2012/06/30 XSSについて追記しました

jQuery 1.8のbeta 1がリリースされました。

このバージョンではcustom buildが可能になる「modularity」という機能が追加されました。
この機能により、ajax, css, dimensions, effects, and offsetという機能を除外したjquery.jsをbuild可能になります。
最小セット(すべてを除いた)ではminifiedかつgzip化された状態で28KBまで小さくなるようです。

個人的にはnodeなどでの利用を考えて、domの部分(sizzle)を選択可能にして欲しいところではありますが、underscoreなどのことも考えると、その部分はlibraryレベルでの使い分けをするほうがよさそうです。

MODULARITY

grunt.jsを利用し、custom biildを行うことができます

$ grunt custom:-ajax

とすることで、ajax機能を除外したバージョンをビルドできます。

手元で、確認したところ、$.getを見るとundefinedになっています。

VENDER-PREFIX CSS PROPERTIES

デザイナを含めて頭痛の種である、VENDER-PREFIXに対して、ブラウザに応じた適切なPREFIXをつけてくれる機能が実装されました。
これにより、

$("#myscroll").css("marquee-direction", "backwards")

と記載することで、例えば、Chromeを使っていた場合、CSSには、「-webkit-marquee-direction: backwards」と適切なPREFIXが付けられます。

ANIMATION (EFFECTS)

これまでの経年により入り組んでいたコードを今回のバージョンで綺麗にし、統制下(笑)に置きました。
これにより、animationを追加したり、改変することが可能になります。
jquery-uiを入れるほどではないけど、もう少し色々したいなぁってことは多かったので、この機能も個人的にはすごく嬉しい機能です。
今回は事前資料も用意しているようです。

SIZZLE CSS SELECTOR ENGINE

SIZZLEのmajorな書き直しも今回のバージョンで入り、パフォーマンスに大きな改善が入ったようです。
パフォーマンスを見ると、Operaたんで、すごい改善されているようですね。
具体的なコードは後で追いたいとおもいます。

XSS PROTECTION

$() methodでscriptタグ作るとinlineでscript記述できてしまいました。このようなケースは、jQueryを利用していようといまいと、多くのサイトで見られました。
1.8の次のバージョンである1.9で$()の役割をより厳しくする予定です。
今回の1.8では明確にHTMLとしてparseされることをユーザに知らせる$.parseHTMLを追加しました。

この挙動を少し見てみると

      console.log($.parseHTML('<script></scr'+'ipt>')) // -> [<script></script>]
      console.log($.parseHTML('<script>')) //-> [<script></script>]

      console.log($.parseHTML('<script src="./hoge.js"></scr'+'ipt>')) // -> []
      console.log($.parseHTML('<script>alert(1)</sc'+'ript>')) // -> []
      console.log($('<script>alert(1)</sc'+'ript>')) // -> [<script>alert(1)</script>]

なんかよさそうですが、malaさんが出された報告の一番最後のコメント

      var param = "]<img src='/' onerror='alert(1)'>[";
      console.log($("a[rel=" + param + "]"))
      console.log($.parseHTML("a[rel=" + param + "]"))

に対しては、全然変わらず、XSSが残されています。
fixされててに問題は移されたらしいんですが、こちらもfixされています。
なんでだろう。

でも、まあ、コメント見ると、$()が厳しくなるようなので、エンドユーザにとってはいいことだと思います。

SPRING CLEANING

trip hazzardをなくした、って書いてあって、repoが貼ってあるんですが404とかどういう罠ですか?

$.browserを1.9で無くします。そのかわりpluginを使ってください。
$.subは、便利さとかロバストネスを示せませんでしたw 1.9のcompatibilty pluginつかってください。

まとめ

modularityはもう少し粒度が細かいほうが嬉しいような気がするし、結局、全部込みで使う気がします。
ANIMATIONを含めた意味でCSS VENDER-PREFIXはかなり嬉しい気がします。
ざっと1.7rc2とのdiff見ると、全然別物っぽくなってますし。

XSSは古いものが動くようにすることも大事ですが、エンドユーザが守られる方に進むのは素晴らしいことだと思います!