【问题标题】:a HREF link in an IFrame to change href valueIFrame 中的 HREF 链接以更改 href 值
【发布时间】:2014-03-24 11:45:30
【问题描述】:

是否可以在 iframe 中更改或附加超链接?

这是我的代码:

 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

    <script type="text/javascript">
    function changelinks(iframe){
      var as = iframe.contentDocument.getElementsByTagName('a');
      for(i=0;i<as.length;i++){
        as[i].setAttribute('href',"http://www.yahoo.com");
      }

    }

    </script>
    </head>

    <body>
    <iframe src="http://www.google.com" onload="changelinks(this)"></iframe>

我的目标是当点击 iframe 下的任何链接时,目标网址将是 www.yahoo.com。

欢迎提出任何建议。 更新我在 iframe 中获取网站,而不是位于我的服务器中。

【问题讨论】:

  • 这是因为 iframe 中的所有链接都链接到 yahoo.com 吗?如果是这样,请参阅here
  • 你不需要setAttribute,你不能只做as[i].href = 'http://www.yahoo.com'吗?
  • @Wilf 我没有发出父窗口或新窗口。
  • @TheWobbuffet "你不能像[i].href = 'yahoo.com'吗?" 哈哈哈谢谢
  • 这真的有效吗? :P

标签: javascript jquery html iframe href


【解决方案1】:

因为你使用的是 jquery。

function changelinks(iframe) {
    var frame = $( iframe ).get(0).contentDocument;

    $( 'a', frame ).click(function( event ) {
        event.preventDefault();
        location.href = 'http://yahoo.com';
    });
}

或者改变元素属性:

function changelinks(iframe) {
    var frame = $( iframe ).get(0).contentDocument;

    $( 'a', frame ).each(function() {
        $(this).attr('href', 'http://yahoo.com');
    });
}

【讨论】:

  • 谢谢建议,还是不行。注意:我在不在我的服务器上的 iframe 中获取网站。
【解决方案2】:

如果 iframe url 是外部 url,您会遇到注入安全问题...

看到这个:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS 这意味着您只能访问您的域站点上的 DOM。 你可以做一些 php "proxy" hacks,在那里你可以更改 href attr 但使用简单的 javascirpt 它不起作用。

(顺便说一句:有一些油脂猴方法,但我认为这不是您网站的选择:))

问候 托马斯

【讨论】:

  • 如果您通过 php proxy hack 显示示例代码,我将不胜感激。
  • 您可以通过 file_get_contents() 获取站点 html(使用 uri)。现在您需要像这样调用替换 href 值: $pageHTML = preg_replace('#href=\"(.*)\"#isU', "href=\"" . $url . "\"", $pageHTML ); (未测试)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 2011-12-27
  • 2013-10-11
  • 1970-01-01
  • 2011-01-13
  • 2023-04-01
  • 1970-01-01
相关资源
最近更新 更多