这是一个我难以清晰表述的问题;仔细阅读。我想知道iFrame的源(通过iFrame显示的页面)是否可以在不更改iFrame父页面源的情况下更改其内部源。
例如:
如果我在网页中创建iFrame,并单击iFrame中的传统链接,则主页面(我创建If的页面)的源(位置)将发生更改,而不是iFrame的内容。
相反,我希望通过框架内容将iFrame的源(此可以为跨域内容)更改为框架本身内的新位置。
我注意到JS中更改页面的方法有不同的行为地方这个SO问题有一些细节。一些方法我注意到,更改页面的行为有所不同,比如不允许用户使用后退按钮进入该用户导航自。
使用这些不同的JS位置更改方法之一,我认为这是可能的,但我不确定如何做到。
问题:
如果iFrame请求的网页与其合作,是否有可能实现iFrame资源更改其自身位置的结果?如果是,是如何做到的?
对于iframe中的任何锚点标记,请尝试将目标设置为_self。像这样:
<a href="/mynewlinkwithiniframe.html" target="_self">Test</a>
我会玩的,但我知道这是老式相框的标准。
编辑根据我所做的一些测试,iframe内锚链接的默认操作是在iframe中加载新内容。target="_self"是多余的,除非有其他东西覆盖它。如果这不能为你解决问题,也许你应该提供更多关于源代码的信息。
我还可以假设您正在使用javascript遇到问题。如果您使用的是window.location.href,则需要更改如下:
代替:
window.location.href = 'newpage.html';
尝试:
window.open('/newpage.html', '_self');
这样做:
window['iframe_name'].src = 'http://yourdomain.com';
或者这样做:
document.getElementById('iframe_id').src = 'http://yourdomain.com';
根据注释,您需要定义_self
:链接的阶段
<a href="#" target="_self">Link</a>
我相信postmessage()会帮助你
https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage
感谢Lawrence Johnson提醒我。您甚至不需要任何Javascript。链接的"目标"是一个窗口名称,因此只要它与窗口或iframe上的name属性匹配,链接就会在iframe中打开。链接可以在iframe内部或外部。我只是在http://ab1jx.1apps.com/pix/panoramas/index.html使用这个原理。每个图像都有自己的html包装器。当你点击iframe下面的链接时,他们会将包装器加载到他们的picframe目标中,在这个过程中更改图像。看看来源。