javascript-更新iframe,历史记录和URL.然后使其与后退按钮一起使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-更新iframe,历史记录和URL.然后使其与后退按钮一起使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1659字,纯文字阅读大概需要3分钟。
内容图文
![javascript-更新iframe,历史记录和URL.然后使其与后退按钮一起使用](/upload/InfoBanner/zyjiaocheng/692/1f0af51d3da74b7a98eaa25c73d36458.jpg)
在浏览器中单击“后退”按钮时,我无法获取URL更新(我正在Firefox上进行测试).更新iframe的“ src”属性后,我使用replaceState更新历史记录.如果在此之后点击后退按钮,则iframe将返回上一页,但URL不会更新以反映这一点.
function updateURLBar(urlInfo) {
var stateObj = { foo: "bar" };
document.getElementById("iframeContent").src = urlInfo[1];
window.history.replaceState(stateObj, "page 2", urlInfo[0]);
}
我是用错误的方式走还是我只是想念一些东西.感谢您对高级的任何帮助!
解决方法:
您可能会发现popstate事件很有趣.
https://developer.mozilla.org/en-US/docs/Web/Events/popstate
首先,我将更改您拥有的几行代码…
function updateURLBar(urlInfo) {
//we can get this stateObj later...
var stateObj = {
foo: "bar",
url: urlInfo[1]
};
//document.getElementById("iframeContent").src = urlInfo[1];
// see EDIT notes
changeIframeSrc(document.getElementById("ifameContent"), urlInfo[1]);
//window.history.replaceState(stateObj, "page 2", urlInfo[0]);
window.history.pushState(stateObj, "Page 2", urlInfo[0]);
}
然后您可以添加:
window.onpopstate = function(event) {
//Remember our state object?
changeIframeSrc( document.getElementById("iframeContent") ),event.state.url); // see EDIT notes.
};
编辑
Iframe警告
使用pushState和更改iframe src属性存在问题.如果iframe位于DOM中,并且您更改了src属性,则会向浏览器历史记录堆栈中添加状态.因此,如果将history.pushState与iframe.src = url一起使用,则将创建2个历史记录条目.
解决方法
当iframe不在DOM中时,更改iframe元素的src属性将不会推送到浏览器历史记录堆栈.
因此,您可以构建一个新的iframe,将其设置为src属性,然后用新的iframe替换旧的iframe.
var changeIframeSrc = function(iframe, src) {
var frame = iframe.cloneNode();
frame.src = src;
iframe.parentNode.replaceChild(frame, iframe);
};
内容总结
以上是互联网集市为您收集整理的javascript-更新iframe,历史记录和URL.然后使其与后退按钮一起使用全部内容,希望文章能够帮你解决javascript-更新iframe,历史记录和URL.然后使其与后退按钮一起使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。