Refused to execute inline的錯誤

今天在測試Cordova的程式時,在Chrome中瀏覽時出現錯誤:
Refused to execute inline script 
because it violates the following Content Security Policy directive:
"script-src 'self' chrome-extension-resource:".

但是在IE、Firefox卻不會有這個錯誤出現,找到google之後發現了因,
因為Cordova在建立專案後,在index.html中的Meta加入下列的語法:
<meta http-equiv="Content-Security-Policy" content="default-src '
self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 
'self' 'unsafe-inline'; media-src *">

所以Chrome會擋住嵌在HTML內的Javascript及onClick等事件的執行,
必須把在HTML內嵌入的Javascript獨立出來成為一個js檔就可以了,
例如我原本的程式: 
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="Content-Security-Policy" content="default-src
      'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; 
style-src 'self' 'unsafe-inline'; media-src *">
    <meta name="format-detection" content="telephone=no">
    <meta name="msapplication-tap-highlight" content="no">
    <meta name="viewport" content="user-scalable=no, initial-scale=1,
    maximum-scale=1, minimum-scale=1, width=device-width">
    <title>Hello World</title>
  </head>
  <body>
    <div></div>
  </body>
</html>

<!--<script type="text/javascript" src="cordova.js"></script>-->
<script>
  alert("hi");
</script>

把script內程式獨立出一個js檔,名為test01.js,內容如下:
alert("hi");

而原本的HTML檔就修改為:
(略…)
<!--<script type="text/javascript" src="cordova.js"></script>-->
<script type="text/javascript" src="test01.js"></script>

這樣在Chrome上測試時就正常了。
當然我們也可以把<meta http-equiv="Content-Security-Policy"...
這一段meta刪掉,就沒有上述的問題了。 


Windows 11安裝時跳過網路連線