Javascript在Chrome和Chrome应用程序中的行为不同

Javascript在Chrome和Chrome应用程序中的行为不同,javascript,google-chrome-extension,code-access-security,Javascript,Google Chrome Extension,Code Access Security,我正在学习如何开发离线chrome应用程序 我有三个组件:main.html、main.css、main.js Main.js使用以下标记加载到Main.html/html/head/script中: <script type="text/javascript" src="main.js"></script> 第4行和第5行中的调用将一些元素填充到main.html中 现在,当我在开发过程中用Chrome加载这个页面时,一切都按预期进行。但是当我以Chrome应用程序的

我正在学习如何开发离线chrome应用程序

我有三个组件:main.html、main.css、main.js

Main.js使用以下标记加载到Main.html/html/head/script中:

<script type="text/javascript" src="main.js"></script>
第4行和第5行中的调用将一些元素填充到main.html中

现在,当我在开发过程中用Chrome加载这个页面时,一切都按预期进行。但是当我以Chrome应用程序的形式加载我的项目时,我在manifest.json中有以下属性:

"app": {"launch": {"local_path": "main.html"}},
"web_accessible_resources": [
  "main.js", "main.css", "main.html"]
...
当我启动应用程序时,它会加载页面,initOnLoad()函数会启动,但第4行和第5行中对document.getElementById()的调用会产生null引用,因此HTML文档中不会加载任何内容


虽然这显然与安全性有关,但我找不到我的错误在哪里。

您能否验证您的“google chrome extension”是否在加载文档后启动了
onLoad
。您可以尝试在
末尾添加
以删除
onLoad
并使用一个自动执行函数,看看是否得到相同的结果。我猜我们需要看到更多的代码——最好是html、调用initOnLoad的javascript,以及您认为相关的任何其他内容(如果元素“wave\u选择器”是由javascript生成的,例如,我们可能需要看到这一点)?是符合它的sdk吗?请多解释一下
...
1:  function initOnLoad() {
2:     alert("initOnLoad started");
3:     initWaveArray();
4:     addWaveButtons(document.getElementById("wave_selector"));
5:     addBandButtons(document.getElementById("band_selector"));
6:     e = document.getElementById("wave_HF");
7:     activeWaveDiv = e;
8:     setActiveWave();
9:     initDateTime();
10: }
"app": {"launch": {"local_path": "main.html"}},
"web_accessible_resources": [
  "main.js", "main.css", "main.html"]
...