我可以从内部更改iFrame的来源吗?

时间:2014-04-16 04:46:22

标签: javascript jquery iframe cross-domain

这是一个我无法清楚说明问题的问题;仔细读。我想知道iFrame的源(通过iFrame显示的页面)是否可以在不更改iFrame父页面源的情况下更改其内部源。

例如:

如果我在网页中创建了iFrame,并点击了iFrame中的传统链接,则会更改母版页(我创建iF的页面)的来源(位置)而不是iFrame的内容。

<小时/> 相反,我希望通过框架内容(此 跨域内容)将iFrame的来源更改为 >框架本身。

  

我注意到改变页面的JS方法有不同的行为   地点。 This SO question有一些详细介绍。一些方法   我注意到,更改页面的行为有所不同,例如不允许   用户使用后退按钮到达用户的页面   导航自。

使用这些不同的JS位置更改方法之一,我认为这是可能的,但我不确定它是如何完成的。

问题:

如果iFrame请求的网页与之合作,是否有可能实现iFrame资源更改其自身位置的结果?如果是这样,它是如何完成的?

4 个答案:

答案 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)

答案 3 :(得分:0)

谢谢Lawrence Johnson提醒我。你甚至不需要任何Javascript。链接的“目标”是窗口名称,只要它与窗口或iframe上的name属性匹配,链接将在iframe中打开。该链接可以位于iframe内部或外部。我只是使用这个原则在http://ab1jx.1apps.com/pix/panoramas/index.html使自己成为一个令人惊讶的简单全景查看器。每个图像都有自己的html包装器。当您单击iframe下面的链接时,他们会将包装器加载到picframe的目标中,从而更改过程中的图像。看看来源。