此问题可能见过。但在我的情况下,我没有取得成功。 我在Iframe中加载了带有示例外部链接的本地HTML文件。
<a href="http://www.boutell.com/">sample.com</a>
代码:
<iframe id="iframe_Id" src="sample.html"
style="background-color:white; height:100%; width:100%;" onload="Load()"; ></iframe>
function Load() {
alert("loaded");
var linkchange = document.getElementById("iframe_Id").contentWindow.location;
alert(linkchange);
}
点击外部链接时,我需要特定锚标记的网址值。
编辑:我知道由于安全策略,我们无法在不同的域名时获取网址。 但是我需要来自本地HTML页面的值(我点击的链接URL)。 在这种情况下我没有尝试
需要任何帮助。
答案 0 :(得分:2)
单击框架中的链接时,可以在父窗口中调用函数。
在父html中,您需要添加一个函数来处理调用。像
这样的东西function iframeLinkClicked(url) {
//do stuff
}
然后在子窗口中添加一个函数来处理超链接的click事件。
function linkClicked(hyperLink) {
parent.iframeLinkClicked(hyperLink.href);
}
您需要将此添加到所有超链接
<a href="http://www.google.com" onclick="linkClicked(this);">google</a>
现在,当您点击某个链接时,它会提醒父窗口。
修改:替代为每个超链接添加“onclick”。
如果框架html位于同一个域中,您可以在加载框架时将事件添加到框架元素。
这是父页面中的完整脚本。
<script type="text/javascript">
function iframeLinkClicked(url) {
alert(url);
}
function Load(iframe) {
iframe.onload = null;
try {
var a = document.frames['iframe_Id'].document.getElementsByTagName('a');
for (var i = 0; i < a.length; i++) {
a[i].onclick = function () {
parent.iframeLinkClicked(this.href);
return false;
};
}
} catch (e) {
}
}
</script>
这将取代您当前的Load()
功能。所以iframe仍然需要设置load属性。
没有任何内容可以添加到子页面了。这一切都在这里完成。
<iframe id="iframe_Id" src="sample.html"
style="background-color:white; height:100%; width:100%;" onload="Load(this);" ></iframe>
答案 1 :(得分:1)
看看这个:
var a = document.frames['iframe_Id'].document.getElementsByTagName('a');
for(i=0; i<a.length; i++) {
a[i].onclick = function() {
document.getElementById("iframe_Id").src = this.href;
// and so on whatever you want to do
}
}