document.getElementById('myframe')和window.frames[i]的区别

问题:使用window.frames[0].src怎么都获取不到url地址,而用$("#frame1").attr("src")却可以

原因如下:

在DOM文档对象模型中,window对象处于最高层,而框架除了是当前窗体的一个节点外,本身也是一个独立window对象, 当frames作为window对象时,有name属性,而没有src属性,只有作为节点时才有src属性, 也就是说window.frames[0]这种写法代表一个window对象,所以window.frames[0].src 当然是undefined了 ,这也是很多人容易混淆的原因!

若要获得src属性,可以这样写:document.getElementById(frame_id).src  //节点对象

<html>
  <head>
  <title>differences</title>
  </head>
  <body>
      <iframe id="myframe" src="http://www.baidu.com" height=400 width=400></iframe>
  </body>
  <script type="text/javascript">
		document.body.onload = function(){
		//这种写法没问题
		//document.getElementById('myframe').src = 'http://www.google.com';
		//这种写法会出错
		//document.getElementById('myframe').location.href='http://www.google.com';
		//这种写法可行
		//window.frames[0].location.href='http://www.google.com';
		//这种会有permission denied错误。
		//window.frames[0].src='http://www.google.com';
	}
	</script>
</html>

var obj = document.getElementById(“iframe”);//获取对象

var dom = document.all.frames[“iframe”];//获取DOM

一个是对象 一个是DOM.

如果只想改变iframe的 src 或者 border ,scrolling 等attributes(与property不是一个概念,property是不能写在标签内的,比如:scrollHeight,nnerHTML等),就需要用到第一种方法。

如果想取得iframe的页面(不是iframe本身)。就需要使用第二种方法,因为它取得的是一个完整的DOM模型,比如想得到iframe的document.body的内容,就只能用第二种方法

另:document.getElementById取到的iframe是不能直接操作里面的document的,只能这样取:

在IE为是frames[id].document或document.getElementById(id).contentWindow.document; 

在firefox为frames[name].contentDocument或document.getElementById(id).contentDocument;做Iframe高度自适应的时候,一般用window.frames['frame'].getXXX()调用子页面JS获取高度,然后设置 document.getElementById('frame').style.height


转载自:

http://www.cnblogs.com/daxian2012/archive/2012/08/03/2621564.html
http://bbs.csdn.net/topics/320021460#r_59704905

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值