1、iframe中不存在name和id的方法(通过contentWindow获取)。
2、iframe里面有name属性。
本文中的方法并不能用于实际小程序项目,仅供学习交流!! 众所周知,微信小程序的js中不能使用 window对象 以及 document对象 。 难道他们真的不存在吗?事实并非如此。 熟悉this的同学都知道,在浏览器环境下,触发一个立即执行函数时,其中this的指向往往都是window对象。 这段js在小程序中是同样有效的,所以window对象确实存在。 window对象中包含了很多对象,如wx、Page、Component、Behavior等变量,你可以试试看。 不过在严格模式下,this就指向了undefined。而且es6转es5时也默认开启了严格模式。 如果你想尝试,首先你需要在微信开发工具中选择右上角的 详情-项目设置 取消选中ES6转ES5即可 获取到了window对象,我们就可以获取其他全局变量 当我们js报错时,其路由前面部分是一样的。 在控制台中,我们可以看到微信小程序的html部分的源码。 在实际开发中我们可以利用这个方法,把一些全局方法给转移或清除掉,比如alert。 1、非严格模式下,可以获取window对象。 2、可以在window中扩展自己的全局变量,当然并不推荐这样做。 3、各种你能想到的操作... 此文仅供交流,如有不当,请指正。为什么可以通过id直接访问对象,是因为所有的元素ID都相当于一个保存对象的全局变量。
通过id直接访问对象还存在兼容问题。
建议用document.getElementById标准的形式获取对象。
如果一个元素符合下面两条规则中的任一条,则window对象中必须要有与之对应的一个属性,属性值就是这个对象。
如果一个元素拥有ID属性,那么ID属性的属性值就会成为window对象的属性名.
如果一个元素拥有name属性,那么name属性的属性值就会成为window对象的属性名.但这个元素的标签名必须是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一个。
但是如果网页有两个相同ID的元素,就有点差异了:
<html><head>
<script type="text/javascript">
function getInput() {
var mydiv = document.getElementById("div1")
alert(mydiv.length)//mydiv是DispHTMLElement
alert(div1.length)//div1是DispHTMLElementCollection
}
</script>
</head>
<body>
<div id="div1">123</div>
<div id="div1">456</div>
<input type="button" value="Test" onclick="getInput()" />
</body>
</html>