通过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.$;
这将允许您在所有节点文件/模块中不使用窗口前缀的情况下使用$。