Javascript 在我的chrome扩展中解决eval()问题

Javascript 在我的chrome扩展中解决eval()问题,javascript,google-chrome-extension,eval,Javascript,Google Chrome Extension,Eval,我目前正在使用的chrome web应用程序有问题。该代码适用于普通的chrome浏览器,但chrome网络商店不喜欢我的代码: 拒绝评估脚本,因为它违反了以下内容安全策略指令:“script src‘self’chrome扩展资源:” 下面是我的代码中包含eval()的部分之一: 这个函数是从一个通过“p”的for循环调用的,所以它在我的对象中循环:period1.bhour,period2.bhour,等等。 Temp变量(TempEmin、TempEHour等)生成period1.ehou

我目前正在使用的chrome web应用程序有问题。该代码适用于普通的chrome浏览器,但chrome网络商店不喜欢我的代码:

拒绝评估脚本,因为它违反了以下内容安全策略指令:“script src‘self’chrome扩展资源:”

下面是我的代码中包含eval()的部分之一:

这个函数是从一个通过“p”的for循环调用的,所以它在我的对象中循环:period1.bhour,period2.bhour,等等。 Temp变量(TempEmin、TempEHour等)生成period1.ehour的值,该值可能类似于14,而不是类似于“period1.ehour”的字符串 我的代码中还有一部分使用eval()将创建的字符串切换为数组名:

for (d = 1; d < 8; d++) { //Loop through days
    for (l = 1; l < 8; l++) { //loop through lessons
        itemToSave = "D" + d + "L" + l;
        arrayToSave = "periodsArray" + d + "[" + (l - 1) + "]";
        localStorage.setItem(itemToSave, eval(arrayToSave));
        console.log(itemToSave + " | Saved");
    }
}
for(d=1;d<8;d++){//循环天数
对于(l=1;l<8;l++){//循环学习课程
itemToSave=“D”+D+“L”+L;
arrayToSave=“periodsArray”+d+“[”+(l-1)+“]”;
setItem(itemToSave,eval(arrayToSave));
console.log(itemToSave+“| Saved”);
}
}
在这里,itemToSave是本地存储密钥,arrayToSave是我的代码中的数组: 周期1[],周期2[]等。 有人能帮我解决不使用eval()的问题吗?
谢谢

不要使用变量的动态命名,而是在对象或数组中使用属性的动态命名

使用对象,您可以访问
periods['period'+p].bhour
而不是
eval('period'+p+'.bhour')


如果使用数组,您将访问
period[p-1].bhour
而不是
eval('period'+p+'.bhour')
而不是使用变量的动态命名,在对象或数组中使用属性的动态命名

使用对象,您可以访问
periods['period'+p].bhour
而不是
eval('period'+p+'.bhour')

如果使用数组,将访问
period[p-1].bhour
而不是
eval('period'+p+'.bhour')

for (d = 1; d < 8; d++) { //Loop through days
    for (l = 1; l < 8; l++) { //loop through lessons
        itemToSave = "D" + d + "L" + l;
        arrayToSave = "periodsArray" + d + "[" + (l - 1) + "]";
        localStorage.setItem(itemToSave, eval(arrayToSave));
        console.log(itemToSave + " | Saved");
    }
}