Chrome拡張機能っていいよね。今まであまり使ってこなかったのだけど、jsかければ自分だけでも使える拡張機能がつくれちゃう。
今回は、Chrome拡張機能を作っていた際に発生したエラーの対応策の書き溜め。
js関数を実行させようとしたら、Refused to execute inline event handler.. のエラーが発生
ボタンにonClickを追加しようとしたら下記のエラーがでた。
1 2 |
Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present. |
htmlは下記のようにonclickでjsを実行させるだけ。
1 2 3 4 |
<div class="box"> <button class="save button" onclick="saveItem()">Save</button> <div> |
原因
公式でも言及しているためそっちをみたほうが早いけど、
Chrome アプリのページでインライン スクリプトを使用できないことが原因です。
scriptブロックと、イベントハンドラ(<button onclick="…">)の両方が禁止されています。
対策
禁止されているのはわかったので対策としては、jsファイル側にDOMContentLoadedを定義する。
1 2 3 |
document.addEventListener('DOMContentLoaded', function() { document.querySelector('.save').addEventListener('click', saveItem); }); |
詳しくは公式サイトをみてね。
じゃあね〜〜〜。