我正在使用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(...)
打开窗口
但没有成功。
所以我的问题是,如何从后台脚本访问新创建的窗口的元素?
答案 0 :(得分:2)
好的,所以这里发生的是错误的时机。
create
的回调在构造页面的DOM结构之前执行;因此,getElementById('areaId')
找不到任何 。
您可以尝试挂钩DOMContentLoaded
事件。
或者,您可以转到recommended route并在该回调中定义一些函数/变量,然后打开的窗口中的代码可以使用(文档推荐onload
)。