通过nodejs + appjs + node-serial访问dom

我有一个appjs应用程序运行良好。 我试图基本上要么从一个事件加载的页面内调用一个现有的JavaScript函数。 或访问事件上的页面元素。 我正在使用霍尼韦尔条形码扫描仪的节点串行库。 我可以访问串口罚款,我可以得到扫描数据就好:

serialPort.on('data', function(data) { ... }); 

我想要做的是,如上所述,在页面上调用一个JavaScript函数即

 window.document.body.scan(data); 

或者至less访问数据,并能够调用/请求与节点的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准备function它的作品。 我很迷茫,因为appjs的文档很less。 谢谢!

serialPort.on('data',function(){…}); 代码正在AppJS中运行,所以要访问需要使用Windowvariables的窗口,请尝试将代码更改为:

 window.$('#message').html('Please wait...'); 

为了能够调用自定义函数(称为扫描),请在window.on('ready',function(){…});

 window.scan = function() { //code to connect to the scanner here. console.log("scan run"); } 

然后在html页面的某个地方,像一个button,然后你可以调用该函数:

  <body> <button onclick="window.scan();">Scan Now!</button> </body> 

你有没有尝试从你的JS文件的顶部访问它? 看起来像Window是未定义的而不是$实例。

我在最近的一个项目中使用jQuery来访问我写的节点模块中的DOM节点。 把它添加到你的app.js文件中,它使用Node全局variables

 // Under your window definition global.$ = window.$; 

这将允许您在所有节点文件/模块中不使用窗口前缀的情况下使用$。