2014-02-22 130 views
2

是否可以在iframe中更改或附加超链接?IFrame中的HREF链接改变href值

这里是我的代码:

<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。

任何建议是值得欢迎的。 UPDATE我在iframe中找不到位于我的服务器中的网站。

+0

这是因为在iframe链接到雅虎的所有环节。 COM?如果是这样,请参阅[这里](http://stackoverflow.com/questions/1037839/how-to-force-link-from-iframe-to-be-opened-in-the-parent-window)。 – Wilf

+0

你不需要'setAttribute',你不可以只用'as [i] .href ='http:// www.yahoo.com''? – Cilan

+0

@Wilf我没有发出父窗口或新的。 –

回答

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'); 
    }); 
} 
+0

感谢您的建议,仍然没有工作。注意:我在位于我的服务器上的iframe中访问网站。 –

0

如果iframe网址是你碰到的注射安全问题的外部网址...

看到这一点:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS 这意味着你可以只能访问您的域名网站上的DOM。 你可以做一些PHP“代理”黑客,在那里你可以改变href attr,但简单的javascirpt它不工作。

(顺便说一句:有一些Greasemonkey的方式,但我认为这不是你的网站:)一个选项)

问候 托马斯

+0

如果您通过php代理黑客展示示例代码,我将非常感谢。 –

+0

您可以通过file_get_contents()(使用uri)获取网站html。现在您需要像这样调用替换href值:$ pageHTML = preg_replace('#href = \“(。*)\”#isU',“href = \”“。$ url。”\“”,$ pageHTML ); (未测试) – dschibait