您好我想在我的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。
由于
答案 0 :(得分:4)
你会混淆客户端和服务器端。
您引用所有的Google分析代码出现在客户端。 (它在结束时触发某种类型的服务器端代码,但这不相关。)
您的NodeJS代码是服务器 - 。您不能让服务器代码直接调用客户端代码,访问其变量等;你也不能这样做。您必须发送信息到服务器(通过使用ajax,web 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
参数,并对其执行操作。 (这是谷歌分析所做的,但比上述更间接。)