是否可以检索作为iframe的网页上的所有href元素?
意思是,我有一个页面来自不同网站的页面。我在iframe中显示的内容包含许多链接(href标记)。
是否可以将BLANK的TARGET属性添加到iframe中的所有链接?链接隐藏在许多div和表中,因此我需要能够以递归方式在多个嵌套表/ div中添加该属性。
修改: 添加了屏幕截图以显示需要删除的额外字符:
答案 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的脚本可以不同。