Webkit 瀏覽器預設焦點查詢演算法

2021-07-22 23:08:04 字數 961 閱讀 8553

當我們用 方向鍵 在 html頁面 上移動,此時,可通過多種方式控制焦點行為:

1、通過 js 邏輯,控制焦點的移動,此時下乙個焦點位置,完全是由 js 來控制

2、可通過瀏覽器預設行為,瀏覽器會計算焦點的位置,響應上下左右按鍵是通過 各個焦點相對位置 來確定下乙個焦點

注:

1、當頁面通過 js 邏輯控制焦點時,要新增 

event.preventdefault()

來阻止瀏覽器的預設焦點行為,以防止焦點被多次處理

2、瀏覽器 判定 焦點位置的時候,會通過多個條件來判定

<1>從 dom 樹遍歷結點,找出在移動方向上的結點,比如,按方向右鍵時,在當前結點左邊以及正上、正下的結點都被 pass

<2>從上面找出的可能結點中,計算每個candidate跟當前結點的距離,並跟最近的結點對比,

如小於最近結點,則設此結點為最近結點【findfocuscandidateincontainer

<3>判斷 candidate 跟當前結點方向是否完全在一條直線上(aligned),平行結點優先於部分平行結點,

即 正對的 優先於 斜對的,

新增次條件以為,計算兩個結點距離時,結點通常不是乙個點,而是有寬高,

距離獲取的都是最近的部分,可能相等

<4>兩個 candidate 可能有重合部分,此時,瀏覽器會通過 hittest 演算法,來判斷究竟是哪個結點優先,

但在 hittest 時,可能

存在後乙個結點蓋住前面結點部分區域的問題,這個還要看情況來判斷

設定預設瀏覽器

常用的設定預設瀏覽器的方法可以參考 這裡面列出了常用的幾種瀏覽器的設定方法,比較直觀,其設定方式都是一樣的,都是通過瀏覽器更改登錄檔的值,現在我給出修改的值的登錄檔的位置 在userchice右面有鍵progid,他的值就是預設開啟方式 谷歌鍵值 將progid設定為 chromehtml 即可 火...

瀏覽器預設樣式

1.頁邊距 ie預設為10px,通過body的margin屬性設定 ff預設為8px,通過body的padding屬性設定 要清除頁邊距一定要清除這兩個屬性值 body 2.段間距 ie預設為19px,通過p的margin top屬性設定 ff預設為1.12em,通過p的margin bottom屬...

瀏覽器預設樣式

html預設樣式 html,address,blockquote,body,dd,div,dl,dt,fieldset,form,frame,frameset,h1,h2,h3,h4,h5,h6,noframes,ol,p,ul,center,dir,hr,menu,pre 以上列表元素預設狀態下一...