在远程nodejs应用中访问窗口对象

Accessing window object in remote nodejs app

本文关键字:访问 窗口 对象 应用 nodejs      更新时间:2023-09-26

嗨,我想在我的nodejs应用程序中访问远程包含的客户端JS代码。很像谷歌分析。

<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,我想得到someID。

如果我不把它指向我的node应用程序,而是指向一个静态JS文件,这很好,但我想把它和其他变量直接消费到nodejs中。

谢谢

你混淆了客户端和服务器端。

你引用的Google分析代码所有都发生在客户端。(它会在它们的末端触发某种服务器端代码,但这无关紧要。)

你的NodeJS代码是服务器端。你不能让服务器代码直接调用客户端代码,访问它的变量,等等;反过来也不行。您必须发送信息到服务器(通过在url中加载带有标识符的资源,通过ajax,使用web套接字等)并发送信息到客户端(通过响应ajax和其他请求,发送web套接字消息等)。

例如,你可以做一些几乎完全像谷歌分析所做的事情:

(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参数,并使用它做一些事情。(这就是谷歌分析所做的,但比上述更间接。)