Javascript 节点红色全局.get(“摄影机url”)引用错误:未定义全局

Javascript 节点红色全局.get(“摄影机url”)引用错误:未定义全局,javascript,iframe,node-red,Javascript,Iframe,Node Red,在节点红色的仪表板上,我想在不同的流中显示摄影机流。背后的想法是在每个流程上显示摄像头 为了显示摄影机流,我使用iFrame。一切都很好,但我必须为每个iFrame提供流的URL 因此,我正在考虑一种解决方案,将URL设置在一个位置,并将其值共享给所有流。据我所知,我必须使用节点red的全局上下文 因此,我安装了node red contrib config包,并放置了如下配置节点 [ { id:3d181192.cf3c5e, 类型:选项卡, 标签:全球数据, 残疾人士:错,, 信息: },

在节点红色的仪表板上,我想在不同的流中显示摄影机流。背后的想法是在每个流程上显示摄像头

为了显示摄影机流,我使用iFrame。一切都很好,但我必须为每个iFrame提供流的URL

因此,我正在考虑一种解决方案,将URL设置在一个位置,并将其值共享给所有流。据我所知,我必须使用节点red的全局上下文

因此,我安装了node red contrib config包,并放置了如下配置节点

[ { id:3d181192.cf3c5e, 类型:选项卡, 标签:全球数据, 残疾人士:错,, 信息: }, { 识别号:5851290f.6758b8, 类型:config, z:3d181192.cf3c5e, 名称:环球环球摄像机, 特性:[ { p:camera_url, pt:全球, 致:http://192.168.178.33:8081, tot:str } ], 主动:对, x:157, y:78, 电线:[] }
] 谢谢阿德林的提示

这是我的解决办法。正如Adelin所解释的,我试图从浏览器访问全局上下文。这是不可能的,只能通过服务器端代码访问它。为了克服这个限制,我使用了一个函数节点,它读取全局上下文并将URL放到msg.payload。此消息被转发到创建iFrame的模板节点

模板节点观察传入的消息并设置iframe的src属性。 为了触发一切,我添加了一个注入节点

[
{
    "id": "f8f0597d.727d28",
    "type": "ui_template",
    "z": "3845329d.55847e",
    "group": "ad85611c.fa213",
    "name": "camera",
    "order": 1,
    "width": "6",
    "height": "6",
    "format": "\n<script language=\"javascript\" type=\"text/javascript\">\n           (function(scope){ \n                scope.$watch('msg', function(msg) {\n    \n    window.ifr = document.getElementById(\"camera\");\n    window.ifr.src=msg.payload;\n                });\n            })(scope);\n\n</script>\n<iframe id=\"camera\" seamless width=\"100%\" height=\"100%\"></iframe>",
    "storeOutMessages": false,
    "fwdInMessages": false,
    "templateScope": "local",
    "x": 95,
    "y": 973,
    "wires": [
        []
    ]
},
{
    "id": "70c649d2.ea3648",
    "type": "function",
    "z": "3845329d.55847e",
    "name": "get_camera_url",
    "func": "msg.payload = global.get(\"camera_url\");\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "x": 108,
    "y": 926,
    "wires": [
        [
            "f8f0597d.727d28"
        ]
    ]
},
{
    "id": "d0e3c1a7.33c8f",
    "type": "inject",
    "z": "3845329d.55847e",
    "name": "trigger camera",
    "topic": "",
    "payload": "",
    "payloadType": "date",
    "repeat": "",
    "crontab": "",
    "once": true,
    "onceDelay": 0.1,
    "x": 89,
    "y": 873,
    "wires": [
        [
            "70c649d2.ea3648"
        ]
    ]
},
{
    "id": "ad85611c.fa213",
    "type": "ui_group",
    "z": "",
    "name": "Serial",
    "tab": "ab06111f.f336",
    "order": 1,
    "disp": true,
    "width": "15"
},
{
    "id": "ab06111f.f336",
    "type": "ui_tab",
    "z": "",
    "name": "Serial Monitor",
    "icon": "dashboard"
}

]

而不是全局写入窗口。您仍然在浏览器中,而不是在nodewindow中。getcamera\u url也没有连接,因为窗口没有get函数。但我明白你的意思,并且能够解决它。谢谢你的提示。