在来自其他域的iframe中运行Javascript

时间:2015-02-28 09:13:44

标签: javascript html iframe

我正在使用其他公司的iframe显示文档列表的网站上工作。这些文档在许多选项卡(" All,Presentations,Reports"等)下分页。如果我使用这个元素作为例子:

<iframe id="frame" src="www.different-domain.com"></iframe>

...有没有办法在页面加载时打开特定标签?所以,如果我想用&#34;演示文稿&#34;打开一个页面。加载,而不是&#34;所有&#34; (默认值),我可以使用Javascript / jQuery来完成这个吗?

使用Javascript中的选项卡生成所有项目的列表,如下所示:

<a href="javascript:loadPresentationData()">Presentations</a>

我不能简单地执行此操作:

document.getElementById('frame').contentWindow.loadPresentationData();

...因为我将获得“权限被拒绝访问财产&#39; loadPresentationData&#39;。

如果我在新的浏览器标签中打开iframe src,请转到控制台,然后输入&#39; loadPresentationData();&#39;,它可以正常工作!

有没有其他方法可以让页面加载时打开标签,而不必联系框架的开发人员(这应该已经完成​​)。

如果我确实需要联系他们,我需要他们做什么,以便我可以在页面加载时打开标签?

非常感谢。

2 个答案:

答案 0 :(得分:0)

你可以在iframe中操纵标签的唯一方法是通过网址恕我直言。 这取决于他们(第三方)如何实施标签。例如,在JQuery UI中,您可以使用哈希访问该标签 e.g。

www.differentdomain.com/#tab-3

请注意,为了进一步调查,我们需要了解更多详细信息(例如真实域名)

答案 1 :(得分:0)

有两种方法可以告诉iframe中的文档做什么,也不能单方面做。

正如@stove所提到的,最简单的方法(对于像制表符这样的结构性东西)将使用带有哈希的URL;另一个域上的应用程序只需要支持它们。

另一种更灵活的方式是使用Cross-document messaging(你会在那里找到一个非常相关的例子)。为了实现这一点,另一个域上的应用程序开发人员必须在他们一边编写一个消息处理程序。