获取iframe内的所有链接并添加空白目标属性

时间:2012-01-17 06:49:44

标签: javascript jquery html

是否可以检索作为iframe的网页上的所有href元素?

意思是,我有一个页面来自不同网站的页面。我在iframe中显示的内容包含许多链接(href标记)。

是否可以将BLANK的TARGET属性添加到iframe中的所有链接?链接隐藏在许多div和表中,因此我需要能够以递归方式在多个嵌套表/ div中添加该属性。

修改: 添加了屏幕截图以显示需要删除的额外字符:

enter image description here

4 个答案:

答案 0 :(得分:4)

如果iframe src位于同一个域中,您可以使用document.getElementById(“frameID”)轻松访问它。记录并操作它。

如果它是不同的域,您可以考虑将iframe链接到您自己域中的脚本,并使该脚本从远程域下载数据并打印出来:)

<强> myHTMLpage.html

<html>
    <head>
    <title></title>
        <script src="jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#ifr").load(function () {
                var ifr = document.getElementById("ifr")
                var anchors = ifr.contentDocument.getElementsByTagName("a");
                for (var i in anchors) {
                    anchors[i].setAttribute("target", "_blank");
                }
            });
        });
    </script>
    </head>
    <body>
        <iframe src="myOwnSite.aspx" width="900px" height="600px" id="ifr" ></iframe>
    </body>
</html>

<强> myOwnSite.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyOwnSite.aspx.cs" Inherits="MyOwnSite" %>

<强> myOwnSite.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;


public partial class MyOwnSite : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Response.Write(new WebClient().DownloadString("http://theExternalSiteHere.com"));
        }
    }
}

答案 1 :(得分:2)

不,如果iframe中的网站不在您的网域上,根据您的说明似乎就是这种情况,则无法做到这一点。

答案 2 :(得分:1)

尝试在iframe的head标记内添加<base target="_blank">

答案 3 :(得分:1)

这对我有用:

var anchors = document.getElementById(id).contentWindow.document.getElementsByTagName(“a”);                 for(var i in anchors){                     anchors [i] .target =“_ blank”; //.setAttribute(“target”,“_ blank”);                 }

我有IE8。 IE 6和IE 7的脚本可以不同。