haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.49k stars 3.26k forks source link

[html] 第319天 iframe在更改了src之后,不出现后退或者前进按钮怎么解决? #1977

Open haizhilin2013 opened 4 years ago

haizhilin2013 commented 4 years ago

第319天 iframe在更改了src之后,不出现后退或者前进按钮怎么解决?

我也要出题

longhui520 commented 4 years ago
why-debug commented 4 years ago

楼主啊,为什么你的面试题没答案啊。。。。

Wyt-GitHub8000 commented 1 year ago

在更改 iframe 的 src 属性之后,浏览器会将新的页面作为一个新的浏览历史记录加入到浏览器中,并生成一个新的历史记录项。因此,在使用 iframe 加载新的页面时,浏览器会自动添加一个新的历史记录,并且不会出现后退或者前进按钮。

    为了解决这个问题,可以使用 HTML5 中的 History API。具体来说,可以使用 history.pushState() 或者 history.replaceState() 方法将新的 URL 添加到历史记录中,从而使浏览器认为加载新页面时没有添加新的历史记录。这样,即使在更改 iframe 的 src 属性之后,也可以通过浏览器的后退和前进按钮来导航到之前访问的页面。

    示例代码如下:

    // 使用 history.pushState() 方法
    history.pushState(null, null, newUrl);

    // 使用 history.replaceState() 方法
    history.replaceState(null, null, newUrl);
    其中,第一个参数为状态数据对象,第二个参数为页面标题,第三个参数为新的 URL。请注意,这些方法只会更改浏览器的地址栏显示的 URL,而不会实际加载新的页面。