请原谅我的无知。我只是在学习如何使用节点Webkit,并且想知道如何通过菜单项填写表单数据。我正在使用下面的代码,并使用“填充”菜单项填充表单数据。但是它报告说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");


它返回元素就好了。但是,在脚本中进行更改仍然使我面临相同的问题。

最佳答案

我遇到了同样的问题。奇怪的是,使用jQuery帮助我修复了它。我有一个HTML网页,其图像标签的ID为“ close”。如果我尝试按原样使用document.getElementById('close'),它将始终返回null。因此,我将其包裹在jquery中,如下所示:

var nw = require('nw.gui');
var win = nw.Window.get();


$(function(){
    var close = document.getElementById('close');
    close.onclick = function(){
        win.close();
    };
});


它立即开始工作。对于为什么nwjs如此表现非常困惑。

09-25 16:56