javascript无法在chrome-app中运行

use*_*847 6 google-chrome-app

我正在尝试开始编写Chrome应用程序.出于某种原因,当我查看作为Chrome应用程序时,javascript不起作用,但它作为网页工作正常.这是我的问题最简单的例子.

使用chrome打开index.html按预期工作 - 按下按钮时,"hello world"字符串变为"CLICK".作为Chrome应用程序运行按下按钮时没有任何反应.

manifest.json的:

{
  "manifest_version": 2,
  "name": "My first app",
  "version": "0.0.1",
  "app": {
    "background": {
      "scripts": ["main.js"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

main.js

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('index.html', {
    bounds: {
      width: 800,
      height: 609
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

index.html的:

<!DOCTYPE html>

<html>
<head>
    <title>test</title>
</head>

<body> 
    <button type="button" onclick="myFunction()">click me</button>
    <script>
        function myFunction(){
            document.getElementById("testdiv").innerHTML = "CLICK"
            }
    </script>
    <div id="testdiv">hello world</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

gee*_*vee 8

好吧,Chrome Extensions Content-Security-Policy不允许使用内联脚本.

内联JavaScript将不会被执行.此限制禁止内联块和内联事件处理程序(例如).

尝试在页面中包含一个包含javascript的脚本文件(<script src="script.js" type="text/javascript"></script">),而不是在页面中使用您的javascript代码.

希望有所帮助.

  • 还有一个错误消息打印到控制台有关不允许的内联脚本.在开发Chrome应用时,控制台应成为您最好的朋友.您还应该区分单个应用程序的可能的多个控制台:一个用于后台页面,一个用于每个打开的应用程序窗口.所有这些都将在您的应用程序的"chrome:// extensions"下显示在开发者模式中.除非应用程序覆盖菜单,否则也可以通过应用程序的任何窗口中的上下文菜单访问它们. (2认同)