ラベル javascript の投稿を表示しています。 すべての投稿を表示
ラベル javascript の投稿を表示しています。 すべての投稿を表示

2007/09/18

The Yahoo! JavaScript Compressor

YUI Compressor(The Yahoo! JavaScript Compressor)新しいバージョンがでました。

で、結構評判がよいみたい。


「Dojo Toolkit JavaScript Compressor」より、高圧縮で安全と紹介されていたので、

新しいYUI Compressorとprototype.js(ver1.5.1で 93.7K)を使って比較してみた。
Dojo Toolkit JavaScript Compressor 66.8k 71%
Dojo Toolkit JavaScript Compressor(strip newline chars) 64.3k 68%
YUI compressor-2.1.1 57k 60%

結構、いい数字でます。
で、「安全」とのことだけれど、それは自前の方でJSファイルで検証。

自分が担当している某Blogに地図を張るサイトのJSにて試してみたところ、
全然問題ないく動作しました。

圧縮結果は外部JSファイル(16個の合計値)
391k→185k

ちなみに、「Dojo Toolkit 」も使っているので、
dojo.jsもYUIにて圧縮を書けたら155k→127k(82%)になった。

YUIは、CSSファイルの圧縮もいけます。

外部CSSファイル(10個の合計値)
44.4k→26.8k

すばらしい。

コマンドは、

基本的には、以下の様な感じ。

java -jar yuicompressor-2.1.1.jar prototype.js

Windows環境下だと、エンコードを指定してあげ無いとデフォルトでMS932に判断するのかしら?

最初うまくいかなかったので、エンコードを指定したら問題なく動きました。

java -jar yuicompressor-2.1.1.jar --charset UTF-8 ./js/cookie.js -o ./js_comp/cookie.js

CSSを圧縮する場合もコマンドは基本的には一緒です。

「--type」をつけなくても問題なく認識(拡張子で判断したのかな?)。

java -jar yuicompressor-2.1.1.jar --charset UTF-8 ./css/help.css -o ./css_comp/help.css

以下に、コマンドのオプションを書いておきます。

<Options>
* -h, --help この情報を表示。
* --line-break 結果に改行を入れる?
* --type 入力ファイルのタイプを指定してね。
* --charset 入力ファイルのタイプを読み込むときのエンコード指定して!
  (WindowsだとデフォルトはMS932っぽい)
* -o 出力ファイル名
* --nomunge [js only] 圧縮のみ。変数(ローカル)の難読化は行わない。
* --warn [js only] コード中に重複した変数や、使用されない変数、慣習的に推奨されない 実装などを見つけた場合に警告をだしてくれます。ごめんなさい、試してないです。

「--warn」 に関しては、どういったものを「推奨されない実装」と判断してるのか興味深いところですね。(widhとかかしら?)

引き続き調査してみます。

DownLoadのQuick Linkはこちら。

Download YUI Compressor version 2.1.2


検証したときは、2.1.1だったんだけど、もう2.1.2が出てたんだね。

2.1.1からの違いは、オプションに以下の変更があり。

「--preserve-semi(不要なセミコロンを削除しないようにする。)」が追加。
「--line-break」が変更が加えられた模様。


で、この記事、たぶん会社のBlogにも使います。

2007/09/17

dojoにて「Permission denied to get property HTMLDocument._parentWindow」

dojoをiframeで呼び出してるのサイトにて、

FireFoxだけ

「Permission denied to get property HTMLDocument._parentWindow」

ってエラーが出ちゃってた。

で、早急に対象して!とのお願いが。。

(そんな使い方してるなんて聞いてないよ!とは言えない。)

で、dojoのtrac(BTS)みてたら、こんなのが・・・。

・Ticket #2723:PopupContainer load error within a cross-domain IFRAME

0.4.1で発見されたのね。PopupContainerが悪い子なのか~。

で、ステータスがfixedになってて、パッチまで出してる!

が、問題のサイトは、0.4.3だから大丈夫だろ?っと思ってみてたらだめでした。

で、0.4.3のPopupContainer.jsを直接直すことに。

問題の箇所はこちら。

211 if (!targetWindow) {
212targetWindow = dojo.html.getDocumentWindow(window.top && window.top.document || window.document);
213}


で、以下のように修正すればとりあえず動きました。

211if (!targetWindow) {
212 try {
213targetWindow = dojo.html.getDocumentWindow(window.top && window.top.document || window.document);
214 } catch(e) {
215 // fallback if this is a cross-domain IFRAME
216 targetWindow = window;
217}
218}


0.9だと直ってんのかな?

このblogも会社Blogに使うよん。