javascript - 访问远程nodejs应用程序中的窗口对象

标签 javascript node.js

您好,我想访问远程包含的 Nodejs 应用程序中的客户端 JS 代码。很像 Google Analytics 所做的。

<script type="text/javascript">
    var someID = 123456;
    (function() {
      var zx = document.createElement('script'); zx.type = 'text/javascript'; zx.async = true;
      zx.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'example.com/';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(zx, s);
    })();
</script>

在上面的场景中,包含的脚本是nodejs,我想获取一些ID。

如果我不是将其指向我的 Node 应用程序,而是指向静态 JS 文件,那没问题,但我想将它和其他变量直接使用到 Nodejs 中。

谢谢

最佳答案

您混淆了客户端和服务器端的事物。

您引用的 Google 分析代码全部发生在客户端。 (它在结束时触发某种类型的服务器端代码,但这并不相关。)

您的 NodeJS 代码是服务器端。您不能让服务器代码直接调用客户端代码、访问其变量等;反之亦然。您必须向服务器发送信息(通过加载 URL 中带有标识符的资源、通过 ajax 、使用 web sockets 等)并将信息发送到客户端(通过响应 ajax 和其他请求、发送 Web 套接字消息等)。

例如,您可以做一些几乎与 Google Analytics 所做的事情完全相同的事情:

(function() {
    var someVariabletoPassToTheServer = "foo";
    var s = document.createElement('script');
    s.src = "//example.com/your/script?data=" + encodeURIComponent(someVariabletoPassToTheServer);
    document.getElementsByTagName('script')[0].parentNode.appendChild(s);
})();

然后,您的 NodeJS 代码可以处理对 example.com 服务器上的 /your/script 的请求,接收 data GET 参数,并用它执行某些操作。 (这就是 Google Analytics 所做的,但比上面的更间接。)

关于javascript - 访问远程nodejs应用程序中的窗口对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141223/

相关文章:

node.js - 可以在 Google Actions V2 中实现音量增大|减小

c# - 更改缓存 HTML 中的 Iframe 内容?

node.js - 如何将一组标准参数传递给 async.js 系列中的每个函数?

javascript - `return` 会在 try/catch block 中被捕获错误吗?

javascript - 如何从 GitHub 源构建 leaflet.markercluster.js?

node.js - Node.js获取图片url

node.js - Electron (原子壳)Module.require的源代码在哪里?

javascript - 如何在JS中获取URL中的#hash值

javascript - async/await 总是返回未定义

javascript - 在 RegEx 搜索中多次重复相同的表达式,并且仅替换一次