今天遇到一個(gè)bug
頁(yè)面中嵌入一個(gè)iframe先巴,通過頂部tab切換來更改iframe的src路徑值,切換看起來很正常摩渺。
當(dāng)我點(diǎn)擊右上角返回時(shí)剂邮,頁(yè)面卻沒有返回到上一個(gè)頁(yè)面,而是iframe在局部回退挥萌,也就是說點(diǎn)擊返回的時(shí)候,iframe的src變成了上一次賦值給他的src龙宏,而頁(yè)面卻沒有回退伤疙。
什么原因呢徒像?
原來iframe的src變更時(shí),會(huì)往window.history中存入一條歷史記錄锯蛀,我們切換iframe的src以后再去回退頁(yè)面時(shí)會(huì)回退到那個(gè)被誤存入的歷史記錄。
那該怎么解決呢翔曲?
很簡(jiǎn)單劈愚,我們只需要在切換src的時(shí)候把iframe給銷毀再重新創(chuàng)建就行了。這樣就是一個(gè)新的iframe掠械,不會(huì)觸發(fā)他的變更操作注祖,也就不會(huì)往window.history中存入記錄。
最簡(jiǎn)單的方式是:
給iframe加一個(gè)key屬性是晨,vue中的實(shí)現(xiàn)方式是<iframe :src="src" :key="src" />
由于vue中的key更改時(shí)會(huì)重新渲染這個(gè)組件罩缴,因此這個(gè)方法是可行的。我們直接將src值賦值給key就可以實(shí)現(xiàn)切換src時(shí)重新渲染iframe了