項(xiàng)目中遇到一個(gè)場(chǎng)景贤斜,index頁(yè)面有多個(gè)入口懂酱,每個(gè)入口都可以進(jìn)入主系統(tǒng),但是需要帶上入口id傳給主系統(tǒng)里面的所有請(qǐng)求接口茄猫,并且進(jìn)入主系統(tǒng)都是打開新窗口狈蚤。難點(diǎn)在于如何把入口id傳給打開的新窗口,并且會(huì)存在有多個(gè)新窗口主系統(tǒng)的存在划纽。
?
入口界面.png
image.png
1. 首先系統(tǒng)中的fetch請(qǐng)求必須是公共方法
- 因?yàn)槲以陧?xiàng)目中把所有fetch請(qǐng)求都寫成一個(gè)公共方法脆侮,并且保存在一個(gè)名為common的JS文件中,所以我的思路是在打開的新窗口中勇劣,只要獲取到一次id靖避,并且傳到common中的公共fetch方法,就可以實(shí)現(xiàn)需求比默。
2. 使用url的方式向新窗口傳遞index頁(yè)面的入口id
- 使用window.open("窗口地址+id")幻捏,然后在新窗口中使用window.location.href可以獲取到id,并且使用一個(gè)公共方法傳入fetch中命咐,主系統(tǒng)中所有請(qǐng)求可以帶上這個(gè)id篡九,但是我發(fā)現(xiàn)當(dāng)通過不同入口打開新窗口時(shí),這個(gè)common中獲取的id是通過最后入口獲取的id醋奠,此時(shí)所有窗口主系統(tǒng)都是用同一個(gè)id榛臼,這樣就達(dá)不到需求
3. 使用sessionStorage傳遞id
- 在入口頁(yè)面打開新窗口的同時(shí),將入口id存入sessionStorage窜司,在公共的fetch方法中獲取id加入沛善,就完美實(shí)現(xiàn)了需求
image.png
image.png