2013-05-06 4 views
0

У меня проблема с моим веб-приложением Chrome, которое я работаю в данный момент. Кодовые работы найти на обычном браузере Chrome, но Chrome Web Store не нравится мой код:Работайте вокруг eval() в моем расширении chrome

Отказался оценить сценарий, поскольку он нарушает следующие директивы Content Security Policy: «скрипт-Src„я“хромирование расширение-ресурс:».

Вот один из разделов в моем коде, который содержит 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); 
} 

Эта функция вызывается из цикл, который проходит через «р», так что циклы через мои объекты : 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 является массив в моем коде: periodsArray1 [], periodsArray2 [] и т.д. Так может кто-нибудь помочь мне работать вокруг не используя Eval()? Thank You

ответ

5

Вместо динамического присвоения переменных используйте динамическое присвоение свойств объекту или массивам.

Используя объект, вы должны получить доступ к periods['period' + p].bhour вместо eval('period'+p+'.bhour').

Если вы используете массив, вы получите доступ к period[p-1].bhour вместо eval('period'+p+'.bhour').