这两天在帮其他项目组的同事做项目,他们使用layui,在使用模板时产生了一个疑问,先上代码
var getTpl = tpl_crumbs_list.innerHTML
tpl_crumbs_list
没有在js里面定义,只在页面上写了一个<script id="tpl_crumbs_list" type="text/html">...</script>
标签,layui是如何获取到变量tpl_crumbs_list的呢????
先到console输入tpl_crumbs_list
,咔还真没报错,也不是undefined
,好神奇啊,是不是layui遍历了所有的script,将所有非普通type的script都设为全局变量了,先搜script
,好像没有,再搜id
也没有,靠靠靠,什么情况,给layui.js加断点,一个函数一个函数运行,跑到最后tpl_crumbs_list
,也是还是没值啊
猜想很有可能与layui没有关系,只要元素有id,就可以通过window[id内容]
获取到此元素,在百度页面实验了一下
果然如此
上百度,好不容易找到了Named access on the Window object
上来就说这是非常规标准定义,使用此API会使代码脆弱不健壮,建议使用document.getElementById()
或者document.querySelector()
方法
自我感觉英语还行,但读起规范来总感觉力不从心
主要有下面三种情况
- 子浏览内容(比如iframe)有
name
属性 - 在当前文档里下面元素有name属性,
a, applet, area, embed, form, frameset, img, object
,我自己实验了几个,发现a
便签上有name属性获取不到此元素,form
与img
获取到了 - 在当前文档里任何元素有id属性,就可以
下面还有一段看起来费劲,这个方法也不是好方法就不看了,大致可以得到下面结论iframe, applet, form, img, object
等元素有name属性,可以通过window[name值]
获取到该元素,任何当前文档元素有id,可以通过window[id值]
获取该元素
贤心大神威武,又知道一个小窍门
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。