这是一个我无法清楚说明问题的问题;仔细读。我想知道iFrame的源(通过iFrame显示的页面)是否可以在不更改iFrame父页面源的情况下更改其内部源。
例如:
如果我在网页中创建了iFrame,并点击了iFrame中的传统链接,则会更改母版页(我创建iF的页面)的来源(位置)而不是iFrame的内容。
<小时/> 相反,我希望通过框架内容(此 跨域内容)将iFrame的来源更改为 >框架本身。
我注意到改变页面的JS方法有不同的行为 地点。 This SO question有一些详细介绍。一些方法 我注意到,更改页面的行为有所不同,例如不允许 用户使用后退按钮到达用户的页面 导航自。
使用这些不同的JS位置更改方法之一,我认为这是可能的,但我不确定它是如何完成的。
问题:
如果iFrame请求的网页与之合作,是否有可能实现iFrame资源更改其自身位置的结果?如果是这样,它是如何完成的?
答案 0 :(得分:0)
这样做:
window['iframe_name'].src = 'http://yourdomain.com';
或者这样做:
document.getElementById('iframe_id').src = 'http://yourdomain.com';
根据评论,您需要定义指向_self
的链接的标记:
<a href="#" target="_self">Link</a>
答案 1 :(得分:0)
对于iframe中的任何锚标记,请尝试将目标设置为_self。像这样:
<a href="/mynewlinkwithiniframe.html" target="_self">Test</a>
我会玩它,但我知道这是旧学校框架的标准。
EDIT 根据我做的一些测试,iframe中锚链接的默认操作是在iframe中加载新内容。目标=&#34; _self&#34;除非有其他东西覆盖它,否则是多余的。如果您没有为您解决此问题,也许您应提供有关源代码的更多信息。
我还可以假设您使用javascript遇到了问题。如果您使用的是window.location.href,则需要按如下方式进行更改:
取代:
window.location.href = 'newpage.html';
尝试:
window.open('/newpage.html', '_self');
答案 2 :(得分:0)
我相信postmessage()可以帮助你
https://developer.mozilla.org/en-US/docs/Web/API/window.postMessage
答案 3 :(得分:0)
谢谢Lawrence Johnson提醒我。你甚至不需要任何Javascript。链接的“目标”是窗口名称,只要它与窗口或iframe上的name属性匹配,链接将在iframe中打开。该链接可以位于iframe内部或外部。我只是使用这个原则在http://ab1jx.1apps.com/pix/panoramas/index.html使自己成为一个令人惊讶的简单全景查看器。每个图像都有自己的html包装器。当您单击iframe下面的链接时,他们会将包装器加载到picframe的目标中,从而更改过程中的图像。看看来源。