请原谅我的无知。我只是学习如何使用node webkit,并想知道如何通过菜单项填写表单数据。我正在使用下面的代码并使用'fill'菜单项填写表单数据。但是它报告var elem = document.getElementById(“username”);返回null。有什么想法吗?
var gui = require('nw.gui');
var file = require('file.js');
var menu = new gui.Menu({ type: 'menubar' });
menu.append(new gui.MenuItem({
label: 'File',
submenu: new gui.Menu()
}));
menu.items[0].submenu.append(new gui.MenuItem({
label: 'New',
click: function () {
gui.Window.open('index.html');
}
}));
menu.items[0].submenu.append(new gui.MenuItem({
label: 'fill',
click: function() {
var elem = document.getElementById("username");
elem.value = "myusername";
}
}));
gui.Window.get().menu = menu;
我正在测试的HTML只是一个带有一个输入的html文档
<input type="text" id="username">
这是我得到的错误
Uncaught node.js Error
TypeError: Cannot set property 'value' of null
at MenuItem.menu.items.(anonymous function).submenu.append.gui.MenuItem.click (file:///C:/nodewebkit/js/main.js:22:13)
at MenuItem.handleEvent (menuitem.js:171:12)
at IDWeakMap.global.__nwObjectsRegistry.handleEvent (node.js:795:26)
更新 我不知道这是否相关,但我注意到的一件事是当我尝试在控制台中执行此操作时,我在执行时会得到“未定义”
var elem = document.getElementById("username");
然而,当我进入
elem = document.getElementById("username");
它返回元素就好了。但是,在脚本中进行更改仍然会让我遇到同样的问题。
答案 0 :(得分:1)
我遇到了同样的问题。奇怪的是,使用jquery帮助我修复它。我有一个带有id&#34;关闭&#34;的图像标签的html页面。如果我按原样尝试使用document.getElementById(&#39; close&#39;),它将始终返回null。所以我把它包装在jquery里面这样:
var nw = require('nw.gui');
var win = nw.Window.get();
$(function(){
var close = document.getElementById('close');
close.onclick = function(){
win.close();
};
});
它立即开始工作。非常困惑为什么nwjs会像这样。