我需要帮助在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.pathname
和location.href
没有iframe也可以在chrome和mozilla中使用。但是,如果我添加document.getElementById("frame")
或document.frames['frame']
,它将停止使用chrome和mozilla。
答案 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);