【发布时间】:2012-07-26 03:12:58
【问题描述】:
有没有办法使用 iframe,但在单击 iframe 内的内容时地址栏仍会更改为页面实际内容?我想在页面顶部有一个带有音乐播放器的水平栏,允许在浏览网站时播放音乐。但我也希望人们也能够轻松地为这些页面添加书签。
我已经搜索过,但找不到答案。许多人只是想更改 iframe 中加载的 URL……这不是我想要的。我希望更新浏览器中显示的实际地址栏。
【问题讨论】:
有没有办法使用 iframe,但在单击 iframe 内的内容时地址栏仍会更改为页面实际内容?我想在页面顶部有一个带有音乐播放器的水平栏,允许在浏览网站时播放音乐。但我也希望人们也能够轻松地为这些页面添加书签。
我已经搜索过,但找不到答案。许多人只是想更改 iframe 中加载的 URL……这不是我想要的。我希望更新浏览器中显示的实际地址栏。
【问题讨论】:
这句话是为了帮助我达到最少 30 个字符。忽略这一点并阅读下一句以获得您的答案:
没有。
更新:
“改变”和“重定向”是两个不同的东西。你需要弄清楚它是什么。 “更改”地址栏是不可能的。 “重定向”是可能的。
从 iframe 中单击标准链接不会影响其自身的最顶层窗口。一个 iframe 中 Javascript 重定向的简单示例如下所示:
顶部窗口:
<html>
<head></head>
<body>
<iframe src="http://yoursite.com/iframe_test.html" />
</body>
IFRAME 测试:
<html>
<head>
<script>
window.onload = ready;
function ready()
{
document.getElementById("link1").onclick = linkClick;
document.getElementById("link2").onclick = linkClick;
}
function linkClick(e)
{
e.preventDefault();
window.top.location.href = this.href;
}
</script>
</head>
<body>
<a id="link1" href="http://youtube.com">Link1</a>
<a id="link2" href="http://facebook.com">Link2</a>
</body>
解释:
如果没有 Javascript,当您点击 iframe 中的链接时,您将停留在原始页面上,并且 iframe 将被重定向到您点击的链接。以这种方式在 iframe 中使用 Javascript 会强制最顶层的框架重定向。
我强烈反对以任何方式依赖它。一般来说,这是一种草率的编程,如果可能的话,我会完全远离 iframe。
【讨论】:
是的,你可以,但这不是一个简单的解决方案,它有一些限制
你可以同时使用Web API messages和history API来得到你想要的。
您可以使用上面的示例并将推送历史记录替换为window.location.replace
请把 sn-p 当作一个提示来得到你想要的。上面的示例没有很好地考虑安全性(即 iframe 脚本正在向父级发送消息,无论其来源如何)。
【讨论】: