Ján Šutor
Ján Šutor

Reputation: 3

iFrame URL in Mozilla

I need help with getting URL of iFrame element in mozilla. While this code works perfectly in IE it does not work in 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>

Can you please tell me how to make it work in mozilla ? I don`t need the src of the iframe but changing URL according to iframe location. Webpage and iframe content are both on the same domain.

I found out that these two codes works perfectly only in IE:

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

Also location.pathname and location.href without iframe work also in chrome and mozilla. But if i add document.getElementById("frame") or document.frames['frame'] it stops working in chrome and mozilla.

Upvotes: 0

Views: 845

Answers (1)

Webbanditten
Webbanditten

Reputation: 880

Your code, I tested this in FireFox 52.0.1 and 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>

There was a funny issue with IE not figuring out the onload event through Javascript.

To Get the src

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

The window.addEventListener is added to make sure the DOM is loaded completely.

To set the src document.getElementById('frameid').setAttribute("src",someurlhere);

Upvotes: 1

Related Questions