現在取り組んでいる Chrome Web アプリに問題があります。コードは通常の chrome ブラウザで検索できますが、Chrome ウェブストアは私のコードを気に入りません:
次のコンテンツ セキュリティ ポリシー ディレクティブに違反しているため、スクリプトの評価を拒否しました: "script-src 'self' chrome-extension-resource:"。
これは、eval() を含むコード内のセクションの 1 つです。
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 の値を生成します。 "period1.ehour" のような文字列ではなく、14 のようなものかもしれません。また、コード内に 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[]、periodsArray2[] など。ありがとうございました