Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在IFrame中添加HREF链接以更改HREF值_Javascript_Jquery_Html_Iframe_Href - Fatal编程技术网

Javascript 在IFrame中添加HREF链接以更改HREF值

Javascript 在IFrame中添加HREF链接以更改HREF值,javascript,jquery,html,iframe,href,Javascript,Jquery,Html,Iframe,Href,是否可以在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.getElemen

是否可以在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){
var as=iframe.contentDocument.getElementsByTagName('a');

对于(i=0;i,因为您正在使用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 url是外部url,则会遇到注入安全问题

见此: 这意味着您只能在域站点上访问DOM。 您可以进行一些php“代理”攻击,您可以更改href attr,但使用简单的javascirpt无法工作

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

问候
Thomas

这是因为iframe链接中的所有链接都指向yahoo.com吗?如果是,请参见。您不需要
setAttribute
,难道不能像[i]那样执行
。href='class1!'http://www.yahoo.com“
?@Wilf我还没有发布父窗口或新窗口。@TheWobbuffet“你不能像[I]那样做吗?”href=''哈哈哈,谢谢你的建议,还是没用。注意:我在iframe中获取的网站不在我的服务器上。如果你通过php代理黑客展示示例代码,我将不胜感激。你可以通过file_get_contents()获取网站html(使用uri)。现在您需要像这样替换href值:$pageHTML=preg\u replace('\\ href=\'(.*)\“\\”、“href=\.$url.\”、$pageHTML);(未测试)