gpt4 book ai didi

javascript - 解决我的 chrome 扩展中的 eval()

转载 作者:行者123 更新时间:2023-11-28 13:43:09 28 4
gpt4 key购买 nike

我目前正在使用的 chrome 网络应用程序遇到问题。该代码可以在普通 Chrome 浏览器上找到,但 Chrome Web Store 不喜欢我的代码:

Refused to evaluate script because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:".

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

function checkTimeToSinglePeriod(p) {
console.log("Check time for Period " + p + "...");
var TempBHour = "period" + p + ".bhour";
TempBHour = eval(TempBHour);
var TempBMin = "period" + p + ".bmin";
TempBMin = eval(TempBMin);
var TempEHour = "period" + p + ".ehour";
TempEHour = eval(TempEHour);
var TempEMin = "period" + p + ".emin";
TempEMin = eval(TempEMin);
}

该函数是从传递“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");
}
}

这里的 itemToSave 是 localStorage 键, arrayToSave 是我的代码中的数组:periodArray1[]、periodArray2[] 等那么有人可以帮我解决不使用 eval() 的问题吗?谢谢您

最佳答案

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

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

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

关于javascript - 解决我的 chrome 扩展中的 eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16397542/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com