我们有一个现有的应用程序A(A/pathnameA/?param1=true¶m2=false
),该应用程序使用window.location.href = A/pathnameB/?param1=true¶m2=false
重定向到应用程序B。所有这些都发生在iframe中。因此,我们在顶部窗口URL中看不到参数更改。在应用程序B的顶部窗口URL中,只有pathname
组件更改为pathnameB
(A/pathnameB/?param1=true¶m2=false
; URL来源组件保持不变)。在应用程序B中,我们使用这些iframe参数param1
,param2
进行处理。
我们现在有一个要求,我们只想使用其中一个参数来更新顶部窗口URL(例如,删除param1
; A/pathnameA/?param2=false
),但是我们想将两个参数都保留在iframe进行处理(即A/pathnameA/?param1=true¶m2=false
)。
为此,我们保留了iframe代码
window.location.href = A/pathnameB/?param1=true¶m2=false // no change
并添加了新代码以仅更新顶部窗口的网址
window.top.location.href = A/pathnameB/?param2=false // for top window url
(或window.parent.location.href = A/pathnameB/?param2=false
)
即使顶部窗口URL中的参数已按预期更新,但现在iframe中的参数也已更新为A/pathnameB/?param2=false
。我们基本上需要iframe URL同时具有param1
,param2
和顶部窗口URL以仅显示param2
。
window.top.location.href
是否还会覆盖iframe URL(window.location.href
)值?