拒绝执行内联事件处理程序,因为它违反了Chrome应用程序中的以下内容安全策略错误

时间:2014-12-18 03:56:15

标签: google-chrome-app

我正在构建一个Chrome应用。以下是我的代码

HTML

<input type="text" id="task" x-webkit-speech class="form-control" placeholder="enter your task" >

<button onclick = "showCD(document.getElementById('task').value)" class="btn btn-success">Add Task</button>

JS

function showCD(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
} 

if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {  // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","http://localhost:8080/getcd.php?q="+str,true);
xmlhttp.send();
}

这在浏览器上完全正常,但是当我在Chrome网络应用程序中尝试它时会抛出标题中提到的错误。我很迷惑。我还检查了以下链接,但这对我没有多大帮助。

https://developer.chrome.com/extensions/tut_migration_to_manifest_v2#inline_scripts

1 个答案:

答案 0 :(得分:2)

有很好的文档证明Chrome Apps不允许这样做:

https://developer.chrome.com/apps/contentSecurityPolicy

所有JavaScript必须是直接来自manifest.json文件(所谓的后台脚本)或初始化Chrome应用窗口的HTML文件引用的JavaScript文件。

(在JavaScript中设置click事件的处理程序。)

阅读Chrome应用程序文档非常重要,其中描述了Chrome应用程序的独特属性。您想要在浏览器中执行的操作完全无关紧要。