是否可以在网址栏中包含iframe内容的网址?
例如,我有一个域sub.test.com
,其中有一个iframe,其中src为realpage.com
浏览网页逻辑上并没有改变地址栏中的任何内容,因为我们在其他域上的iframe中打开了真实页面。
我知道无法将整个网址注入地址栏,但如果没有主机名呢?
例如,如果我在realpage.com/first.php
中打开网站iframe
,我希望地址栏中的网址更改为sub.test.com/first.php
或sub.test.com/first
答案 0 :(得分:3)
您有两个选项可以使用pushState
(more info),也可以使用哈希键导航(more info),如果您希望使其与不支持的浏览器兼容但pushState
可用。
pushState示例:
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
哈希键示例:
if ("onhashchange" in window) {
alert("The browser supports the hashchange event!");
}
function locationHashChanged() {
if (location.hash === "#somecoolfeature") {
somecoolfeature();
}
}
window.onhashchange = locationHashChanged;
有关详情,请点击此处链接:Change the URL in the browser without loading the new page using JavaScript
答案 1 :(得分:1)
顶级框架可以使用the history api更改地址(尽管不是原始部分),特别是pushState
。
要对框架中的导航做出反应,因为它是跨越原点的,您需要使用postMessage
发送要更改的网址。