记得在前端面试中,会被问道遇到最困难的问题是什么,我总是怕自己说的问题不够难,其实经常困扰我的反而是一些小问题,就因为足够小,所以每次检查的时候都不觉得这里有问题,从而忽视。
这次的任务是给浏览器插件写插件,这个程序设计了一个流程,用户可以通过模块来的组建,其中有一个是 JavaScript 模块,流程走到这会执行 js 代码,需要在本地编辑好后再复制过去。
下面的例子都是基于上述场景的
浏览器自动切换 iframe 上下文
通过开发者工具检查当前元素,测试好后就通过插件执行,却提示获取不到,我首先想到的是可能插件获取 DOM 元素有特定的规则,问了一下有没有遇见在开发者工具能获取,在插件之中却没法获取的情况,并没有受到什么启发。
反正我当时想了很多,也尝试了下,后来才意识到其实不可能这么复杂,又仔细检查了元素的路径,发现了一层 iframe...,而且这层 iframe 单独打开和之前是没有区别的,就是你很难想象这么简单的一个页面,会嵌套一层 iframe。
而且由于开发者工具在检查元素时会自动切换 iframe 上下文,所以是可以查询的到,但是同样的代码通过 JS 来运行就查不到了。
map 方法与 table
这个是要用原生 js 组装个执行结果反馈页面,涉及到了 Table,
用户那边每次执行,表格上面就会多一行的逗号,而我这边却没有,我在想会不会是编译的问题,自己研究下无果后,一个同事提醒我问下插件开发员人员,倒是提醒了我,会不会是数据原因,因为她看八行数据有 7 个逗号。我刚想反驳,因为我的账号是有一个数据的,也没有逗号,我立马有删除了,因为我只有一条数据,自己又造了一条数据,果然有了一个逗号。
原来是在模板字符串中有了 map 方法,但是没有使用 join,序列化的时候就会加逗号,而经常使用 React 已经忽略了这一点,而且这些逗号是一起跑到表格前面,我一直觉得就是表格前面的代码造成的。