未知の実行時エラー

IEにおけるJavaScriptのエラーメッセージは不親切極まりないものが多いが、これも酷い。

調べてみると、どうやらreadonly属性のinnerHTMLを書き換えようとした場合。例えば table.innerHTML はIEではreadonlyらしく、これを書き換えようとするとこの「未知の実行時エラー」が出る。

table.innerHTML を設定することが次の表示されるエラー メッセージを表示します。

また、本来書き換えることができる要素でも、HTMLのDOM構造が壊れていたりすると同様のエラーになる場合があるらしい。

var ps = document.getElementsByTagName('p');
for (var i=0; i<ps.length; i++) {
    var re = new RegExp('before', 'g');
    var p = ps[j];
    p.innerHTML = p.innerHTML.replace(re, 'after');
}

こんな感じでブロック中の文字を置換するだけの単純なスクリプトが、とあるHTMLに限って「未知の実行時エラー」。大分悩まされたんですが、HTML中に閉じていないAタグが存在していたのが原因というオチでした。