当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID

how can a Javascript page have a unique ID when browsed by two instances of same browser?

本文关键字:Javascript 何具 ID 唯一 实例 浏览器 两个 浏览      更新时间:2023-09-26

在同一台计算机上,同一用户浏览同一浏览器的两个实例时,页面如何具有某种唯一标识?每个浏览器都会向服务器发送.load,其中包含对每个浏览器的不同数据的请求。服务器对两个浏览器的两个响应中的每一个都将包含在负载中发送的唯一ID。

情况:一个用户浏览到我的页面,其中有一个图表。页面加载到服务器以获取图表的接近实时的数据。

用户需要打开浏览器的第二个实例,进入同一页面,选择不同的图表,以便同时观看两张图表。

浏览器的两个实例都需要发送一个.load请求不同的数据,.load还需要为页面的每个实例包含一个唯一的ID。

这听起来更像是你对服务器的请求应该完全是自我描述的和无状态的。然后,如果用户打开一个新的浏览器窗口并转到一个新图表,当页面向服务器请求该图表的数据时,它只会"告诉"服务器它感兴趣的图表。根本不需要唯一的ID。如果你认为这对你不起作用,那么也许你需要描述为什么你需要一个唯一的ID,这样我们可能会更好地知道如何提供帮助。

如果你觉得你必须铸造一个唯一的ID,那么让服务器铸造ID并将其返回到页面。该页面可以将唯一ID保存在自己的javascript中,然后如果它请求任何新的图表,它可以传入该唯一ID。任何其他打开的页面,即使在同一浏览器中,也将有自己的javascript存储,从而有自己的唯一ID。

仅供参考,您无法在客户端上生成100%保证的唯一ID。如果你真的需要一个全世界唯一的ID,那么你需要在一个通用服务器上生成它。

这可以使用HTML5的sessionStorage来解决。我同时在两个FireFox浏览器上进行了测试。

    present_ID = sessionStorage.unique_session_ID
    adm( 'present_ID=' + present_ID )
    if( present_ID == undefined  ||  present_ID == "" )         // not set yet?
    {
        new_present_ID = Math.random()
        adm( 'set=' + new_present_ID )
        sessionStorage.unique_session_ID = new_present_ID
        present_ID = new_present_ID
    }
    set_text( present_ID, 'unique_page_identification_id' )

(请投票)