觉得有必要把解决电子地图无法匹配网点问题记录一下。

电子地图采用iframe方式调用gis页面,整个过程是通过window.open链接到一个html页面,用url传参。然后在html页面中通过js解析url,把参数和gis的接口地址组合通过iframe加载gis页面。

其中有个参数就是gis的回调地址,查看gis代码知晓,点击gis的确认匹配网点按钮后就是通过修改window.location的值为回调地址+gis返回参数的方式返回结果的。

那么问题来了,修改了window.location会导致页面重定向,虽然还是重定向到那个html,但是原来所有的以前内容都进行了刷新。

所以在开始做电子地图这个功能的时候,在回调之后我只能通过

Ext.ComponentQuery.query方法找到网点控件,结果导致多开窗口时找错了控件。

那么解决办法肯定还是找到发起窗口的网点控件了,我唯一的想法就是把控件id

附到url里传过去,之前知道了页面进行了重定向,所以我尝试了使用变量缓存、使用标签暂存,皆不可行,反正就是参数存不住。

把id附到url传给gis也不可行,gis回调之后的地址会丢失这里的数据。

万万没想到,我最后还是解决了这个问题,下面隆重介绍一个属性:

document对象的referrer属性,

返回导航到当前网页的超链接所在网页的URL

也就是说我可以拿到gis回调之后,从gis过来链接的父url,id唾手可得。

问题解决。