IFrame 中的 HREF 链接以更改 href 值

Posted

技术标签:

【中文标题】IFrame 中的 HREF 链接以更改 href 值【英文标题】:a HREF link in an IFrame to change href value 【发布时间】: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 【参考方案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 ); (未测试)

以上是关于IFrame 中的 HREF 链接以更改 href 值的主要内容,如果未能解决你的问题,请参考以下文章

在 iframe 中更改网站的链接 [关闭]

Phonegap / Cordova ios外部链接iframe无法在safari中打开

Layuilayui中iframe子页面中的链接点击后在父页面中动态添加tab选项

如何将iframe视频缩放到更小的尺寸以适应iOS中的UIWebView框架?

a.html加载完成后自动点击iframe里的href?

更改引用父 href 属性的跨度文本