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;
南来地,北往的,上班的,下岗的,走过路过不要错过!
======================个性签名=====================
之前认为Apple 的iOS 设计的要比 Android 稳定,我错了吗?
下载的许多客户端程序/游戏程序,经常会Crash,是程序写的不好(内存泄漏?刚启动也会吗?)还是iOS本身的不稳定!!!
如果在Android手机中可以简单联接到ddms,就可以查看系统log,很容易看到程序为什么出错,在iPhone中如何得知呢?试试Organizer吧,分析一下Device logs,也许有用.