我需要使用脚本标签 long polling来实现跨站comet http 服务器推送机制。(呼……)为此,我将脚本标签动态插入到 DOM 中,服务器发回简短的 js 脚本,这些脚本只是调用处理传入消息的本地回调函数。我试图找出一种方法将这些回调调用中的每一个与发送它的脚本标签相关联,以将传入的回复与其相应的请求相匹配。
显然,我可以简单地在 GET url 中包含一个请求 ID,然后将其返回到服务器生成的 js 脚本中,但这会产生一堆不必要的流量,并且不会让我觉得特别优雅或聪明。
我想做的是以某种方式将请求 ID 与我生成的脚本标记相关联,然后从从该脚本标记内部调用的回调函数中读出该请求 ID。这样,所有的请求管理都将保留在客户端上。
这让我想到了以下问题:有没有办法向浏览器询问当前正在执行的脚本标签的 DOM 元素,所以我可以使用标签元素将参数传递给包含的 javascript?
我找到了这个线程:
这正是在问这个问题,但是接受的答案对我没有用,因为它仍然需要在服务器返回的 js 脚本中膨胀(在脚本中设置标记变量)并且它依赖于脚本的唯一文件名,我没有。
此外,这个线程是相关的:
并且,除其他外,建议简单地抓取 DOM 中的最后一个脚本,因为它们是按顺序执行的。但这似乎只在页面加载时有效,而不是在动态添加脚本并且可能以独立于其插入的顺序完成加载的情况下。
有什么想法吗?
PS:我正在寻找一个仅限客户端的解决方案,即没有请求 ID 或唯一的回调函数名称或其他需要发送到服务器并由服务器处理的非有效负载数据。我希望服务器(理论上)能够返回两个 100% 相同的脚本,并且客户端仍然能够正确关联它们。