首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nodejs + appjs + node-serial访问dom

使用nodejs + appjs + node-serial访问dom
EN

Stack Overflow用户
提问于 2013-02-23 02:53:39
回答 2查看 1.3K关注 0票数 1

我有一个运行良好的appjs应用程序。我基本上是在尝试在一个事件上从已加载的页面中调用现有的javascript函数。或者访问事件上的pages元素。我正在使用带有霍尼韦尔条形码扫描仪的节点串行库。我可以很好地访问串行端口,使用以下命令可以很好地获取扫描数据:

代码语言:javascript
复制
serialPort.on('data', function(data) { ... });

如上所述,我希望能够做的是在页面上调用javascript函数,即

代码语言:javascript
复制
window.document.body.scan(data);

或者至少可以访问数据并使用node调用/发出http请求,这一点我也能做得很好。当我在

代码语言:javascript
复制
window.on('ready', function(){ ... });

我可以很好地访问页面上的元素。即

代码语言:javascript
复制
var $ = window.$;
$("#message").html('Something...');

但是,如果我尝试在serialPort.on数据函数中运行完全相同的代码,我会得到如下错误

代码语言:javascript
复制
        $('#message').html('Please wait...');
        ^
TypeError: object is not a function...

或者甚至$(“#.html”)消息表明"html“不是一个函数。但是如果我在window.on ready函数上运行它,它就可以工作。我很迷惑,因为关于appjs的文档很少。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-02-23 06:09:46

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

代码语言:javascript
复制
window.$('#message').html('Please wait...');

为了能够调用自定义函数(称为扫描),在window.on('ready',function(){ ... })中执行以下操作;

代码语言:javascript
复制
window.scan = function() {
    //code to connect to the scanner here.
    console.log("scan run");
}

然后在html页面的某个地方,比如一个按钮,你可以调用这个函数:

代码语言:javascript
复制
 <body>
 <button onclick="window.scan();">Scan Now!</button>
 </body>
票数 1
EN

Stack Overflow用户

发布于 2013-03-19 22:33:37

您是否尝试过从JS文件的顶部访问它?看起来Window是未定义的,而不是$ instance。

在最近的一个项目中,我使用我编写的节点模块中的jQuery访问了DOM节点。将此文件添加到app.js文件中,它使用的是Node global variable

代码语言:javascript
复制
// Under your window definition
global.$ = window.$;

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15031221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档