【JavaScript】IE6のString.split()の不具合と対策
具体的には、例えば『javascript:alert(',,'.split(/,/).length)』を実行すると、結果が「0」になってしまいます(正しくは「3」)。
対策としては、次のようにして String.prototype.split を置換してやるとよいかもしれません。
↓
【2007/12/11追記】
他にもいろいろ問題がありそうなので(例えばString.split()のブラウザでの差異 - ?D of K)、ちゃんとした対策が必要なら、『JavaScript split Inconsistencies & Bugs: Fixed!』を使用するのがよいと思われます。
String.prototype.split=function(sreg){
var text=this, reg=(typeof sreg=='string')?RegExp(sreg,'g'):RegExp(sreg.source,'g'+((sreg.ignoreCase)?'i':'')+((sreg.multiline)?'m':''));
if (!reg.source) return [text];
var sindex=0, eindex, elms=[];
do {
reg.exec(text);
eindex=reg.lastIndex;
elms.push(text.substring(sindex,(eindex)?eindex:text.length).replace(sreg,''));
sindex=eindex;
} while (sindex);
return elms;
}
}
IE6限定ということで、
elms.push(text.substring(sindex,(eindex)?eindex:text.length).replace(sreg,''));の部分は
elms.push(text.substring(sindex,(eindex)?RegExp.index:text.length));に変えた方が速くなりそうですね。
2007/12/08(土) 16:22 | 固定リンク
| 記事の編集(管理者用)
「パソコン・インターネット」カテゴリの記事
- AmazonのProduct Advertising API認証プロキシ公開(REST)(2009.07.03)
- 【JavaScript】各種色指定用の文字列を16進カラーコード(#xxxxxx)に変換(2007.11.29)
- Twitter個別発言の前後を表示するスクリプトは便利ですね(2009.06.12)
- 『お気楽五七五』でTwitterはじめてみました(2009.06.12)
- 【お気楽五七五】なんとなく五七五でつぶやくサービスを作ってみた(2009.06.02)
「覚書」カテゴリの記事
- AmazonのProduct Advertising API認証プロキシ公開(REST)(2009.07.03)
- 【JavaScript】各種色指定用の文字列を16進カラーコード(#xxxxxx)に変換(2007.11.29)
- 【ココログ】コメント出来ないときに使ってみるブックマークレット(2007.03.27)
- Twitter個別発言の前後を表示するスクリプトは便利ですね(2009.06.12)
- 【お気楽五七五】なんとなく五七五でつぶやくサービスを作ってみた(2009.06.02)

