2011-03-29 11 views
4

これはIE8の既知の問題かどうかわかりませんが、実際にはそれに関する情報は見つかりません。IE8 RegExp.exec()の強制型バグ?

// The regex can vary but has to have a non-matching group defined: 
var re = /^(\s)?[\d]+$/i; 
// We call it with a string... 
re.exec("2"); 
// We call it with a number... 
re.exec(2); 

FirefoxとChrome(どちらかといえばOperaで試用できません)はどちらの呼び出しでも問題ありません。しかしIE8では、2番目の呼び出しは "オブジェクトがそのプロパティまたはメソッドをサポートしていない"というエラーで失敗します。

これは既知のバグなのですか?

+1

@worksは、自分のコンピュータ上のすべてのブラウザ(+ ie8)で素晴らしい。 ;) –

+0

正規表現の2回目の呼び出しで失敗しないのは確実ですか?あなたはre.exec( "2")なしで試してみましたか?行?それは失敗ですか? – jishi

+0

@jishiはい。 @Caspar Kleijne Mmm ...もっと深く見なければなりません。ありがとう。 –

答えて

1

execは文字列を受け取りますので、必ず文字列を渡しています。数を渡すことで、ブラウザがjavascriptを実装する方法の灰色の領域に数えようとしていると言えます。

1

Ext JS 4アプリケーションでも同じ問題が発生しました。 Ext JSが時々exec()メソッドで数値を渡すように見えるので、多くのことが失敗していました。この問題はサードパーティのライブラリSyntaxHighlighterであることが判明しました。これを削除すると、IE8のデフォルト動作とre.exec(2)が元に戻りました。働いた。

私はあなたが原因を見つけるまで、あなたのアプリに含める外部JSを切り詰めることをお勧めします。

関連する問題