从另一个域的iframe中的代理访问父/原始URL(相同的原始策略)

时间:2013-10-14 10:58:58

标签: javascript iframe onload

我有一个带有iframe的页面,可以在列表中输出第三方内容

每项内容均位于li,其中包含唯一的等级item-X

<li class="item-1">
   <a href="item-1.html">View Item 1</a>
</li>
<li class="item-2">
   <a href="item-2.html">View Item 2</a>
</li>

我正在寻找一种方式:

用户访问

www.parent-domain.com/?view_item=1

iframe会读取此地址,并模拟所引用的click上的item

iframe内的内容使用onLoad('parent-domain.com/foo.html)加载代理HTML文件,我可以添加JS。 (据推测这是为了解决同源政策)。

这甚至可能吗?

  • 从父网址获取查询字符串
  • 从iframe读取值(在onLoad();
  • 内的文件内)
  • 使用与值
  • 匹配的类在li a上触发点击事件

1 个答案:

答案 0 :(得分:0)

我建议您将父查询字符串传递给iframe(使用服务器端代码等)。

然后,您可以从查询字符串中轻松检索“view_item”:

function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

然后你只需找到带有id的链接并触发点击:

var link = document.getElementbyId(getParameterByName("view_item"));
link.click();