string.match() 仅在 IE 8 中计算为 null

string.match() evaluates to null in IE 8 only

我有一些工作的 JavaScript 代码可以在其他浏览器中完美运行,但 不适用于 IE 8。这实际上是一段简单的代码,我真的无法弄清楚问题是什么?

简而言之,while 部分永远不会在 IE 中执行(d.match(pattern) 总是 null),在所有其他浏览器中我得到正确的偏移量.

var ids = new Array(),
    d = o.innerHTML,                  // gets correct HTML code in all browsers
    pattern = /id="subblock_(\d+)"/,
    p;

while (d.match(pattern) != null) {

  // IE never gets here!
  p = d.search(pattern);
  ids[ids.length] = d.match(pattern)[1];
  d = d.substr (p+14);

  }

d 变量的值如下所示

<div id="subblock_0">...</div>
<div id="subblock_7">...</div>
<div id="subblock_59">...</div>

不确定,它对我来说看起来很正确,但显然微软又不同意我的看法。

注意:我已尝试使用 IE 8 和 Firefox、Chrome 和 Opera 的最新更新!

我懒得启动虚拟机了,不过我没记错的话IE8没有return引号。一个简单的 console.log(d) 可以验证这一点。

pattern = /id="?subblock_(\d+)"?/,