Mozilla 中的 iFrame URL

iFrame URL in Mozilla

我需要有关在 mozilla 中获取 URL iFrame 元素的帮助。虽然此代码在 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 中停止工作。

你的代码,我在 FireFox 52.0.1 和 IE 11 中测试过。

<iframe id="frame" onload="myFunction()" src="" ></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; // => "whosebug.com"
    parser.port;     // => "80"
    parser.pathname; // => "/questions/42905168/iframe-url-in-mozilla/42905409"
    parser.search;   // => ""
    parser.hash;     // => ""
    parser.host;     // => "Whosebug: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);