这是我的html / javascript。下面有两个我试过的if语句。我使用indexof来获取标签之间的文本。还尝试使用href ==来使用href = contents。两者都不起作用。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>pb</title>
<script type="text/javascript">
function call() {
alert("Called!");
var allAnc = document.getElementById("d").contentDocument.getElementsByTagName("a");
for (var i = 0; i < allAnc.length; i++) {
if (allAnc[i].href.indexOf("Flag") > 0) {
alert("Found link by indexof, Trying to click!");
(allAnc[i]).click();
break;
}
if (allAnc[i].href == "javascript:flag.closeit()") {
alert("Found link by href, Trying to click!");
(allAnc[i]).click();
break;
}
}
}
</script>
</head>
<body>
<input id="Button1" type="button" onclick="call()" value="button" />
<iframe id="d" src="sourceurl.html" width="100%" height=700"></iframe>
</body>
</html>
以下是我尝试点击的iframe内的链接:
<a style="text-align: left;" href="javascript:flag.closeit()" title="Flag">Flag</a>
答案 0 :(得分:1)
根据您的评论,您要将不同域的内容加载到iframe中,因此由于same origin policy限制,您无法阅读该域的内容。
答案 1 :(得分:0)
以下是该问题的演示,代码主要是复制的&amp;粘贴你的问题:
http://jsfiddle.net/colllin/G2BDb/
内部iframe代码在这里:
http://jsfiddle.net/colllin/wc8Up/
正如您在单击按钮时在控制台中看到的那样,
Refused to display 'https://www.google.com/#Flag' in a frame because
it set 'X-Frame-Options' to 'SAMEORIGIN'.
因此,如果您可以控制 iframe链接到的页面,您可以在该页面上设置X-Frame-Options
标题以指定ALLOW-FROM
uri (from MDN):
ALLOW-FROM uri
The page can only be displayed in a frame on the specified origin.
或者,如果您可以控制原始iframe源(我假设您这样做,否则甚至无法访问内容,更不用说单击链接了),您可以在之前将target="_top"
属性添加到链接中点击它。 这会导致链接的页面替换窗口中的顶级页面。