TopJavaScript > 2007年9月
2007年9月13日

prototype.js と pngfix.js の競合を解消する

September 13,2007 2:18 AM
Tag:[]
Permalink

prototype.js の Ajax.Request と pngfix.js の処理が競合(あるいは干渉)して、pngfix.js 側の処理が正常に行われなくなるという問題の解消策です。

この問題の発端は、pngfix.js を利用した「Movable Type 4 の透過 PNG ロゴを IE6 以下のブラウザで透過する」と、prototype.js を利用した「BlogPeople 等のリンクリストによる表示の遅延を解消する(その2:Ajax編)」のカスタマイズを同時に行うと「PNGが透過されません」というご質問を頂いたことによるもので、本エントリーにて回答致します。

両スクリプトの読み込み順序を入れ替える実験を行ったところ、

<!--[if lt IE 7.]>
<script defer type="text/javascript" src="http://user-domain/pngfix.js"></script>
<![endif]-->

をページの一番最後(body 終了タグの直後等)に配置すれば、PNGが透過されるようになりました。

ただしタイミングによってはステータスバーに、

(残り1項目)ページ http://~ を開いています...

という表示が継続してしまうので、完全な解決には至っていないかもしれません。

Comments [2] | Trackbacks [1]
2007年9月 4日

JavaScript の for 文のパフォーマンスを改善する

September 4,2007 2:28 AM
Tag:[, ]
Permalink

すでにご存知の方も多いと思いますが、for 文のパフォーマンス改善テクニックです。

変更前

for (i = 0; i < elements.length; i++) {
       :
}

変更後

for (i = 0, len = elements.length; i < len; i++) {
       :
}

変更前は、ループ処理の i < elements.length つまり length プロパティの参照が毎回行われます。この、いわゆる「ドットつき比較計算」はコストが高い、ということです。

変更後は初期化式で elements.length を保持しているので、ループ回数にかかわらず参照は1回だけになります。

ただし、ネイティブな配列の場合は変更前後でそれほど差はないようで、NodeList オブジェクト(よくみかける document.getElementsByTagName() 等)では、length プロパティの参照回数のインパクトが大きいようです。ブラウザによっても差があるようです。

参考記事:

Comments [1] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3