【问题标题】:iframe click event to change location/URL (cross domain but have control of both domains)iframe 点击事件更改位置/URL(跨域但控制两个域)
【发布时间】:2011-07-04 11:11:01
【问题描述】:

我正在开发一个包含主站点之外的站点 - 然后是分支站点。

这些广告系列位于一个单独的域中(但我可以访问这两个域)。

广告系列通过 iframe 拉入主网站,每个 iframe 都将包含主网站菜单(通过代理将其拉入广告系列网站)。

我需要的是,如果点击主导航上的链接,实际浏览器位置将会改变,而不仅仅是 iframe。这样浏览器的 URL 会发生变化,用户实际上会使用 iframe 离开页面。

我知道相同的来源政策,这就是为什么我遇到这么多麻烦 - 但是因为我可以控制两者并且可以修改每个脚本我认为必须有办法解决这个问题?

我一直在尝试类似的事情

    $(function(){
    $('#menu a').click(function(){
        var linkLocation = $(this).attr('href');
        //parent.location.href=linkLocation
        parent.location.replace(linkLocation)
        return false;
    });
});

但无论其位于哪个域,它似乎都不起作用。非常感谢任何指针/帮助/建议。

安迪

【问题讨论】:

    标签: jquery iframe proxy cross-domain cross-domain-policy


    【解决方案1】:

    不应该是window.parent 而不仅仅是parent吗?从 iframe 内部你应该能够做到window.parent.location = linkLocation;

    编辑: 您也可以选择这样做

    var links = document.getElementsByTagName('a');
    for (var i=0; i<links.length; i++) {
      if (links[i].href.indexOf('javascript:') == 0 || links[i].href.indexOf('mailto:') == 0) {
      }
      else {
        $(links[i]).attr('target', '_parent');
      }
    }
    

    【讨论】:

    • 谢谢你,先生 - 我刚刚修改了 'window.parent..' 并且瞧 - 工作
    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多