« 「まあさスクリプト」1.00やっとリリース | トップページ | 二枚落ち »

2009-06-11

「まあさスクリプト」バグ修正(1.02)



GoogleChromeで局面がうまく読み込めない事象が発生。


タイミングよく数日前にMacOSX版のGoogleChrome開発者向け版が配布されているようだったので、早速落として検証。どうも正規表現のgオプションでのループで失敗しているみたい。



re=/正規表現/g;
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こんな感じでループさせて、さらにその外側に1つループがあるんだけど、どうもbreak;でループ抜けた時に前の状態(lastIndexとか)が残ってしまっているっポイ。



re=/正規表現/g;
re.lastIndex=0;

としてやるとちゃんと動くみたいだけど、なんかスマートじゃないよね。


いろいろググってみると、FireFoxなどでもそうなるみたいだ。あれ、FireFoxは試した筈…あれ…あはは駄目だorz…。


というわけで、GoogleChrome、Firefox、Operaで上手く動作してなかった模様。


正規表現のリテラルでの代入をやめてnew RegExpで正規表現オブジェクトをつくってやるのがいいらしい。



re=new RegExp("正規表現","g");
while( re.exec(str) !=null ){
//ループ
if( /*条件*/ ){ break; }
}

こういう風に書き換えました。



while( /正規表現/g.exec(str) !=null ){
//ループ
}

こうやっちゃいけないのは作りながら確認してたんだけど、それで解決したと思ってたっぽい・・・。反省。


|

« 「まあさスクリプト」1.00やっとリリース | トップページ | 二枚落ち »

JavaScript」カテゴリの記事

将棋ツール」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1326191/33343612

この記事へのトラックバック一覧です: 「まあさスクリプト」バグ修正(1.02):

« 「まあさスクリプト」1.00やっとリリース | トップページ | 二枚落ち »