来自IFrame Javascript的链接的URL

时间:2013-11-05 13:14:30

标签: javascript html iframe

此问题可能见过。但在我的情况下,我没有取得成功。 我在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)。 在这种情况下我没有尝试

需要任何帮助。

2 个答案:

答案 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
  }
}