Mozilla中的iFrame URL

时间:2017-03-20 13:42:48

标签: javascript url iframe mozilla

我需要帮助在mozilla中获取iFrame元素的URL。虽然这段代码在IE中完美运行但在mozilla中不起作用。

<iframe id="frame" onload="myFunction()" src="./upload/" ></iframe>

<script type="text/javascript" >
   function myFunction()
   {                            
      var a = document.getElementById("frame").contentWindow.location.href;
      alert(a)
   }
</script>

你能告诉我如何让它在mozilla中运行吗? 我不需要iframe的src,但根据iframe位置更改URL。网页和iframe内容都在同一个域中。

我发现这两个代码仅在IE中完美运行:

document.getElementById("frame").contentWindow.location.href;
document.frames['frame'].location.pathname;

同样location.pathnamelocation.href没有iframe也可以在chrome和mozilla中使用。但是,如果我添加document.getElementById("frame")document.frames['frame'],它将停止使用chrome和mozilla。

1 个答案:

答案 0 :(得分:1)

您的代码,我在FireFox 52.0.1和IE 11中进行了测试。

<iframe id="frame" onload="myFunction()" src="http://stackoverflow.com/questions/42905168/iframe-url-in-mozilla/42905409" ></iframe>
<script type="text/javascript">
window.addEventListener("load", function(){
    document.getElementById('frame').onload = myFunction;
});
function myFunction() {
    var a = document.getElementById("frame").src;
    var parser = document.createElement('a');
    parser.href = a;
    parser.protocol; // => "http:"
    parser.hostname; // => "stackoverflow.com"
    parser.port;     // => "80"
    parser.pathname; // => "/questions/42905168/iframe-url-in-mozilla/42905409"
    parser.search;   // => ""
    parser.hash;     // => ""
    parser.host;     // => "stackoverflow:80"
    alert(a);
} 
</script>

有一个有趣的问题,IE没有通过Javascript搞清楚onload事件。

获取src

window.addEventListener("load", function(){ alert(document.getElementById("frameid").src); });

添加window.addEventListener以确保完全加载DOM。

设置src document.getElementById('frameid').setAttribute("src",someurlhere);