try / catchブロック内でexecScriptを使用して、文字列化されたJavaScriptの一部を実行しています。文字列にexecScript内でjavascriptエラーがある場合、その後のページのリロード時にIE8のcatchブロック内で次のエラーが返されます。
「エラー:エラー80020101のため、操作を完了できませんでした。」
上記のような一般的なエラーをスローしないIE8でJavaScriptをグローバルに評価する他の方法はありますか?evalはグローバルコンテキストでJavaScriptを評価しないため、evalを使用しても機能しないことを私は知っています。
以下は私のコードがどのように見えるかに関するいくつかの設定です。fnは評価される文字列です。
// fn is defined somewhere above this code
function globalEvaluation() {
if(document.defaultView) {
document.defaultView.eval.call(undefined, fn);
} else if (document.parentWindow) {
document.parentWindow.execScript(fn);
}
}
return function() {
try {
globalEvaluation();
} catch(e) {
// do some error handling
// in IE 8 I get the 80020101 error
}
}