所以我有一个需要删除的窗口属性变量,当然 IE 讨厌这个delete
方法。我已经尝试过在这里找到的解决方案,如下所示:
try {
delete window.locator_init_in_progress;
}
catch (e) {
window.locator_init_in_progress = undefined;
}
现在我在 IE8 中收到以下错误:
我需要做些什么才能使它停止抛出错误并在 IE8 中工作?(我假设它是try
抛出错误的部分,但是如果控制台中有任何错误,此代码将不会通过我们的 QA 流程,那么我需要做什么才能使它起作用?我应该放弃 try/catch并对用户代理进行测试,如果是 IE8,将属性设置为未定义?
更新
是的,变量已定义。我已经添加了一些警报,因为 IE8 可以在 console.logs 上爆炸。这是我当前的代码:
// window.ie8orearlier is a global variable that is set
// based on user agent string; in this case it's correctly
// evaluating to true when testing in IE8
if(window.ie8orearlier && window.locator_init_in_progress!= undefined && window.locator_init_in_progress == true) {
alert("ie8 and value is set; not undefined");
window.locator_init_in_progress = undefined;
}
else if(window.ie8orearlier && window.locator_init_in_progress == undefined) {
alert("ie8 and undefined; do nothing");
}
else {
alert("else");
delete window.locator_init_in_progress;
}
它一直在点击“ie8 并且值已设置;不是未定义”警报。据我所知,错误(IE8 的开发工具没有为错误提供行号)是由试图将值设置为未定义的行抛出的。