この記事を読むと以下のような価値が生まれます。

  • unsafe-evalの意味がわかる
  • setInterval構文の正しい書き方がわかる
さっさと本文読んでほしいにゃ

エラー文

Chromeで新規タブを開いたときに、
JavaScriptで動くデジタル時計を表示させようとしていたら
時計がうごかず、、、
JSclock-notworking

Chromeの画面で右クリック>検証>consoleタブ
にこんなエラーが表示されていました。

Refused to evaluate a string as JavaScript because ‘unsafe-eval’ is not an allowed source of script in the following Content Security Policy directive: “script-src ‘self’”.

Chrome ExtensionsでUncaught EvalErrorになったときの対処法にも書かれている通り、
簡単に訳すと

文字列からコードを生成するevalメソッドはGoogleのセキュリティ上、ダメですよ!

解決策

setIntervalメソッドの第一引数を文字列ではなく、関数として読み込んだ。
私がコードの中で文字列から生成していたコードが以下であります。

改善前

setInterval('showClock()', 1000);

改善後

setInterval(function(){showClock()}, 1000);

改善前後全文

GitHubのソースコード

setInterval code img

無事表示されました JSclock-working