我有一个运行良好的 appjs 应用程序。我基本上试图从事件的加载页面中调用现有的 javascript 函数。或者访问事件的页面元素。我正在将 Node 串行库与霍尼韦尔条形码扫描仪一起使用。我可以很好地访问串行端口,我可以很好地获取扫描数据:
serialPort.on('data', function(data) { ... });
如上所述,我想要做的是在页面上调用 javascript 函数,即
window.document.body.scan(data);
或者至少访问数据并能够使用 Node 调用/发出http请求,我也能做得很好。当我在
中运行这些东西时window.on('ready', function(){ ... });
我能够正常访问页面上的元素。即
var $ = window.$;
$("#message").html('Something...');
但是如果我尝试在serialPort.on数据函数中运行完全相同的代码,我会得到类似的错误
$('#message').html('Please wait...');
^
TypeError: object is not a function...
甚至 $("#message").html 表明“html”不是一个函数。但如果我在 window.on 就绪函数上运行它,它就可以工作。我很迷茫,因为 appjs 的文档很少。谢谢!
最佳答案
serialPort.on('data',function(){ ... });代码正在 AppJS 中运行,因此要访问需要使用 Window 变量的窗口,请尝试将代码更改为:
window.$('#message').html('Please wait...');
为了能够调用自定义函数(称为 scan),请在 window.on('ready', function(){ ... }); 中执行以下操作:
window.scan = function() {
//code to connect to the scanner here.
console.log("scan run");
}
然后在 html 页面上某个按钮之类的地方,您就可以调用该函数:
<body>
<button onclick="window.scan();">Scan Now!</button>
</body>
关于node.js - 使用 Node js + App JS + Node-Serial 访问 dom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15031221/