我正在使用JavaScript制作一个小型iframe应用程序,而且我似乎无法找到一种方法来更新我在我点击iframe内部链接时创建的网址栏中的网址。
它需要是瞬时的,并且最好不要每毫秒检查document.getElementById('idofiframe')。src的值是否已经改变。
我似乎找不到一个简单的属性来告诉url何时发生了变化,所以如果没有,那么以编程方式解决这个问题也会有效。
感谢您的帮助!
答案 0 :(得分:1)
这很难做到,因为它被认为是xss而且大多数浏览器会阻止它。
很可能有一些涉及AJAX的解决方法。
答案 1 :(得分:1)
首先,只有当iframe的源指向与父窗口相同的域时,才可能执行此操作。因此,如果您有一个页面page.html iframe另一个页面iframed.html,那么它们都必须驻留在同一个域中(例如www.example.com/page.html和www.example.com/iframed.html)
如果是这种情况,您可以在iframed.html页面中执行以下操作:
<script type="text/javascript">
window.onload = function() {
var links = document.getElementsByTagName('a');
for (var i=0, link; link = links[i]; i++) {
link.onclick = function() {
window.parent.location.href = '#' + encodeURIComponent(this.href);
}
}
}
</script>
这样,只要您点击iframed.html中的链接,网址栏就会将链接的网址放在网址的“哈希标记”中(例如www.example.com/page.html #HTTP%3A%2F%2Fwww.example.com%2FanotherPage.html)
显然,你必须在每个要出现在iframe内的页面上都有这样的脚本。
一旦到位,您就可以将此代码段放在page.html中,它会使iframe自动加载哈希标记中的网址:
window.onload = function() {
var url = window.location.hash.substr(1);
if (url) {
document.getElementById('iframe').src = url;
}
}
我很遗憾没有运行此代码来测试它,但它非常直接,应该解释这个想法。让我知道它是怎么回事!
答案 2 :(得分:1)
你可以向iframe添加一个onload事件,然后监视它 - 每当帧完成加载时它都会被抛出(当然,它可能会再次出现相同的URL ...)
答案 3 :(得分:0)
相反,您是否可以将代码添加到框架的内容中,以便将事件引发到容器框架?
在IE中,“OnReadyStateChanged”事件可能会为您提供所需的内容。