应用程序后台脚本,访问打开窗口的元素

时间:2016-02-08 11:19:56

标签: javascript google-chrome-app

我正在使用Chrome应用,我需要后台脚本来访问它创建的html窗口的元素。

请不要回答我可以从创建的窗口启动的其他脚本中执行此操作,因为这不是我需要的。

这是我的background.js文件:

chrome.app.runtime.onLaunched.addListener(function() {
   chrome.app.window.create('window.html',
      {'outerBounds': {'width': 600, 'height': 500 }},
      function(myWin) {
          myWin.contentWindow.document.getElementById('areaId').value='New text!';
   }); 
});

这是windows.html:

<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <textarea id="areaId" name="areaId"  rows="4" cols="50">
      This is my text.
    </textarea>
  </body>
</html>

当我启动应用程序时,我收到错误:

  

&#34;未捕获的TypeError:无法设置属性&#39;值&#39; of null&#34;

我也试过myWin.document.getElementById(...) 并使用var myWin=window.open(...)打开窗口 但没有成功。

所以我的问题是,如何从后台脚本访问新创建的窗口的元素?

1 个答案:

答案 0 :(得分:2)

好的,所以这里发生的是错误的时机。

create的回调在构造页面的DOM结构之前执行;因此,getElementById('areaId')找不到任何

您可以尝试挂钩DOMContentLoaded事件。

或者,您可以转到recommended route并在该回调中定义一些函数/变量,然后打开的窗口中的代码可以使用(文档推荐onload)。