- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在node-red的模板节点内有一段javascript代码,这段代码是一个简单的进度条。在 html 代码的按钮上运行 javascript 函数非常容易,但我想在 payload
到达时运行代码...然后我想发送一个新的 有效负载
当宽度
等于95...
我的想法是运行这段代码: msg.payload === 0 ? move() : ''
当我的 payload
等于 0 时运行 move()
。但我不知道在哪里写它。
然后,当 witdh 等于 95 时,我尝试将值 1 分配给我的 payload
但不起作用...肯定我没有使用好的语法..有点失去与交互的能力此 template
节点为节点红色。
<!DOCTYPE html>
<html>
<style>
#myProgress {
width: 100%;
background-color: #ddd;
}
#myBar {
width: 100%;
height: 30px;
background-color: #4CAF50;
}
</style>
<body>
<h1>JavaScript Progress Bar</h1>
<div id="myProgress">
<div id="myBar"> </div>
</div>
<p id="msg"> </p>
<button onclick="move()">Click Me</button>
<br>
<script>
var i = 0;
function move() {
if (i == 0) {
i = 1;
var elem = document.getElementById("myBar");
var message = document.getElementById("msg");
var width = 100;
var id = setInterval(frame, 100);
function frame() {
if (width <= 0) {
clearInterval(id);
i = 0;
} else {
width = width - 1;
elem.style.width = width + "%";
elem.textContent = width;
if (width == 95) {
message.textContent = "forcez";
{payload: 1};
}
}
}
}
}
</script>
</body>
最佳答案
也许您已经知道这一点,但让我在这里重复一遍,因为很多人不知道或已经忘记了。
您的 Node-RED 流程作为 Node.js 应用程序在服务器(后端)中运行。
脚本标签内的 JavaScript 代码在浏览器中运行。
浏览器中的代码无法直接从运行时的 ui_template 读取消息或向 ui_template 发送消息。
(a) 从运行时向浏览器中运行的代码发送消息。
解决方案是将您的函数包装在该函数周围:
(function(scope){
scope.$watch('msg',function(){
...
})
})(scope)
(b) 将对象从浏览器中运行的代码发送到运行时。
范围对象有一个发送函数,可用于在运行时内从 ui_template 节点发送消息。
您想使用以下语句:scope.send(msg),例如:scope.send({topic : "topic", payload : "payload"})
根据您的具体情况,您需要将这些行添加到 ui_template 中的代码中
<script>
(function(scope) {
// $watch fires each time the node is triggered in the flow
scope.$watch('msg', function(msg) {
if (msg.payload == 0) {
move();
}
});
.............
})(scope);
</script>
还有
if (width == 95) {
message.textContent = "forcez";
scope.send({payload:"warning: width 95"});
}
您的 sample 流程可能需要进行一些其他更改,例如一种保护措施,以避免当 ui_template 仍在倒计时时收到新的有效负载时它运行两次。
这里尝试在示例代码中实现这些更改:
[{"id":"dba00648.b7f6d8","type":"tab","label":"Flow 12","disabled":false,"info":""},{"id":"4cc372c7.58d5ac","type":"ui_template","z":"dba00648.b7f6d8","group":"5af14c6e.d86604","name":"","order":5,"width":0,"height":0,"format":"<!DOCTYPE html>\n<html>\n<style>\n#myProgress {\n width: 100%;\n background-color: #ddd;\n}\n\n#myBar {\n width: 100%;\n height: 30px;\n background-color: #4CAF50;\n}\n</style>\n<body>\n\n\n<div id=\"myProgress\">\n <div id=\"myBar\"> </div>\n</div>\n <p id=\"msg\"> {{msg.payload}} </p>\n \n\n\n<br>\n\n\n<script>\n\n(function(scope) {\n // $watch fires each time the node is triggered in the flow\n scope.$watch('msg', function(msg) {\n if (msg.payload == 0) {\n move();\n }\n });\n\nvar i = 0;\nfunction move() {\n if (i == 0) {\n i = 1;\n var elem = document.getElementById(\"myBar\");\n var message = document.getElementById(\"msg\");\n message.textContent = \"start\";\n var width = 100;\n var id = setInterval(frame, 100);\n \n function frame() {\n if (width <= 0) {\n clearInterval(id);\n i = 0;\n } else {\n width = width - 1;\n elem.style.width = width + \"%\";\n elem.textContent = width;\n if (width == 95) {\n \tmessage.textContent = \"forcez\";\n \tscope.send({payload:\"warning: width 95\"});\n \n }\n \n }\n }\n }\n}\n\n})(scope);\n</script>\n\n</body>","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":440,"y":240,"wires":[["9779fd5e.1d736"]]},{"id":"9779fd5e.1d736","type":"debug","z":"dba00648.b7f6d8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":610,"y":240,"wires":[]},{"id":"dde1582.3b84ca8","type":"inject","z":"dba00648.b7f6d8","name":"","topic":"","payload":"0","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":240,"wires":[["4cc372c7.58d5ac"]]},{"id":"72ccb344.ed011c","type":"inject","z":"dba00648.b7f6d8","name":"","topic":"","payload":"1","payloadType":"num","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":270,"y":280,"wires":[["4cc372c7.58d5ac"]]},{"id":"5af14c6e.d86604","type":"ui_group","z":"","name":"Compte à rebours","tab":"7560e5e8.ee7dfc","order":3,"disp":true,"width":"6","collapse":false},{"id":"7560e5e8.ee7dfc","type":"ui_tab","z":"","name":"Préhension SELFIT","icon":"dashboard","order":4,"disabled":false,"hidden":false}]
引用文献:
https://flows.nodered.org/flow/2f1aaf0635f9bf23207152682323240a
How to store a msg.payload into a script variable inside a ui_template node red?
关于javascript - 在node-red中使用msg.payload运行javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60491599/
概述 我想实现一个 Lucene 索引器/搜索器,它使用新的有效负载功能,允许向文本添加元信息。在我的具体情况下,我向概念标签添加权重(可以理解为 % 概率,介于 0 到 100 之间),以便使用它们
我正在分析一个 metasploit 漏洞 here我试图弄清楚 payload.encoded 中的 payload 来自第 358 行。我是开发开发的新手,但基本的编程规则说 payload 应该
我从我的 javascript 发送交易 Metamask 打开传输对话框 我确定 i get an error message in metamask (inpage.js:1 MetaMask -
action.payload 何时、何地以及为什么被调用?请任何人帮助我了解action.payload的实际用途是什么。我已经搜索了很多网站,但我不明白.. 最佳答案 当您处理请求时,例如单击我们需
我用 Angular 编写代码,在一种情况下,json 返回一个值(如有效负载),我需要对其进行解密。我有一个这样的有效载荷: 我需要解码它。像下面的方式:例如,$B 部分的值我只需要 14,$s 的
我正在编写一个进行服务调用的 Chrome 扩展。 当我发出同源 POST ajax 请求时,我的数据对象以 JSON 格式传递: $.ajax(sameOriginURL, { data
如何在连接语句的 lambda 中访问信号的“有效负载”? 假设信号看起来像这样: signals: void stateChanged(std::pair); 现在在 connect 语句中,我
我正在尝试使用 RestSharp 来使用查询 rest,但我总是收到 Bad Request 响应。代码: var url = "https://gql.tokopedia.com/graphql/
在 Android GCM 文档中,据说有效载荷最大为 4096 字节限制。 payload的4096字节是否包括registration_id长度?我发现我可以发送有效载荷为 16038 字节(包括
前言 做过前后端联调的小伙伴,可能有时会遇到一些问题。例如,我明明传递数据给后端了,后端为什么说没收到呢?这时候可能就会就会有小伙伴陷入迷茫,本文从chrome-dev-tools(F12调试器)中看
我将 JSON 提供给某个网络钩子(Hook)以触发通知 (M$ Teams)。这很好用。但是,我想扩展我的 Perl 脚本:我需要在特定条件下向我的“messagecard”构造添加一个新节点。 例
我有一个 Xamarin 项目(UWP 和 iOS)在 VS2015 中构建并运行良好。 该项目包含一些通用 Windows 和 iOS 项目,以及两个平台使用的许多 PCL(用于 View 模型、服
我正在使用 Hyperledger Fabric Java SDK 通过 txId 获取交易。返回对象包含交易信息。 TransactionInfo txInfo = channel.queryTra
我有以下代码,用于检查 token 并授权 Google 用户登录 GoogleIdToken.Payload tempPayload = token.getPayload(); if (!tempP
当我们使用 sqlmap ,它会自动执行查找网站的 sql 注入(inject) 的所有操作。我感兴趣的是我直接在我的浏览器中发送恶意查询并在其中获取结果,但是当我找不到任何东西时,我使用 sqlma
我正在使用 Redux 和 React 从 API 加载数据。尽管成功提取数据并将其应用到状态,但它会抛出错误: Uncaught TypeError: Cannot read property 'p
我对 python 的随机函数有一个问题。我不知道哪个随机函数适用于此代码: name=['toffla','rebecca','toff','becca'] if (parser.getPayloa
在阅读了 Heartbeat 的 RFC 6520 后,我有几个问题: https://www.rfc-editor.org/rfc/rfc6520 具体来说,我不明白为什么心跳需要包含任意有效负载甚
如何用php curl发送请求负载? 我正在尝试将一个文件上传到一个免费托管文件的服务器,当将文件发送到curl时,我不接受它,我重定向到一个错误页,当我从您的interfas中执行此操作时,我可以在
我有一个非 ARC 项目,现在我在成功迁移后使用 SDK 8.1 迁移了应用程序 Xcode 6,当我尝试将其存档时,*.ipa 文件已创建,但如果我尝试通过上传应用程序diawi 或 hokey 应
我是一名优秀的程序员,十分优秀!