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

时间:2013-02-28 16:55:59

标签: javascript node.js

您好我想在我的nodejs app中访问远程包含的客户端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,我想得到一些ID。

如果我指的不是我的节点应用程序而是静态JS文件,那很好,但我想将它和其他变量直接用于nodejs。

由于

1 个答案:

答案 0 :(得分:4)

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

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

您的NodeJS代码是服务器 - 。您不能让服务器代码直接调用客户端代码,访问其变量等;你也不能这样做。您必须发送信息到服务器(通过使用ajaxweb sockets加载带有标识符的资源,使用{{3}}等)并将信息发送给客户端(通过响应ajax和其他请求,发送Web套接字消息等。)。

例如,您可以做一些几乎与Google分析所做的事情:

(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代码可以处理/your/script服务器上example.com的请求,接收data GET参数,并对其执行操作。 (这是谷歌分析所做的,但比上述更间接。)