記得在前端面試中俗或,會被問道遇到最困難的問題是什么市怎,我總是怕自己說的問題不夠難,其實經常困擾我的反而是一些小問題蕴侣,就因為足夠小焰轻,所以每次檢查的時候都不覺得這里有問題,從而忽視昆雀。
這次的任務是給瀏覽器插件寫插件辱志,這個程序設計了一個流程蝠筑,用戶可以通過模塊來的組建,其中有一個是 JavaScript 模塊揩懒,流程走到這會執(zhí)行 js 代碼什乙,需要在本地編輯好后再復制過去。
下面的例子都是基于上述場景的
瀏覽器自動切換 iframe 上下文
通過開發(fā)者工具檢查當前元素已球,測試好后就通過插件執(zhí)行臣镣,卻提示獲取不到,我首先想到的是可能插件獲取 DOM 元素有特定的規(guī)則智亮,問了一下有沒有遇見在開發(fā)者工具能獲取忆某,在插件之中卻沒法獲取的情況,并沒有受到什么啟發(fā)阔蛉。
反正我當時想了很多弃舒,也嘗試了下,后來才意識到其實不可能這么復雜状原,又仔細檢查了元素的路徑聋呢,發(fā)現(xiàn)了一層 iframe...,而且這層 iframe 單獨打開和之前是沒有區(qū)別的,就是你很難想象這么簡單的一個頁面颠区,會嵌套一層 iframe削锰。
而且由于開發(fā)者工具在檢查元素時會自動切換 iframe 上下文,所以是可以查詢的到毕莱,但是同樣的代碼通過 JS 來運行就查不到了器贩。
map 方法與 table
這個是要用原生 js 組裝個執(zhí)行結果反饋頁面,涉及到了 Table朋截,
用戶那邊每次執(zhí)行磨澡,表格上面就會多一行的逗號,而我這邊卻沒有质和,我在想會不會是編譯的問題,自己研究下無果后稚字,一個同事提醒我問下插件開發(fā)員人員饲宿,倒是提醒了我,會不會是數(shù)據(jù)原因胆描,因為她看八行數(shù)據(jù)有 7 個逗號瘫想。我剛想反駁,因為我的賬號是有一個數(shù)據(jù)的昌讲,也沒有逗號国夜,我立馬有刪除了,因為我只有一條數(shù)據(jù)短绸,自己又造了一條數(shù)據(jù)车吹,果然有了一個逗號筹裕。
原來是在模板字符串中有了 map 方法,但是沒有使用 join,序列化的時候就會加逗號窄驹,而經常使用 React 已經忽略了這一點朝卒,而且這些逗號是一起跑到表格前面,我一直覺得就是表格前面的代碼造成的乐埠。