firefox中如何查看input的selection對象

解決需求的過程——發(fā)現(xiàn)問題

現(xiàn)在產(chǎn)品需求需要做一個ip輸入框UI組件啃奴,類似于windows中自帶的ipv4協(xié)議面板中ip輸入框控件。

windows自帶的ip輸入框組件

創(chuàng)意來源于模仿,一切學(xué)習(xí)都是從模仿開始顾瞻。于是準(zhǔn)備模仿windows的做一個璃赡。

但是在研究過程中發(fā)現(xiàn)這樣一個情況:
①當(dāng)鼠標(biāo)聚焦在ip地址一欄第一個輸入框的時候,按鍵盤.會使得focus到第二個框并且如果第二個框有文字那么文字將被選中禁灼。
②當(dāng)此輸入框中的文字被選中時,再按.將不會聚焦下一個轿曙。

關(guān)鍵詞:focus前一個弄捕,按`.`,下一個聚焦并選中

提出問題:選中文字我該如何去實現(xiàn)呢导帝?

分析問題

看很多技術(shù)博客守谓,重在闡述解決方案。當(dāng)然這無可厚非您单,過程反正已經(jīng)解決了何必關(guān)心細(xì)節(jié)呢斋荞,我只需要記錄下解決方案,下次再遇到的時候來查解決方案就好了虐秦。實際上平酿,解決問題、分析問題的過程要比最終解決問題的方案結(jié)果有價值得多悦陋。因為這里面你會發(fā)現(xiàn)很多牽連出來的新東西蜈彼。雖然這個過程對大多數(shù)博客閱讀者來說沒有什么意義。但是首先對于自己俺驶,其次對于那些希望欣賞探究過程的人來說是大有裨益的幸逆。

.的時候?qū)嶋H上需要執(zhí)行如下邏輯:

當(dāng)鼠標(biāo)聚焦某輸入框并且按下鍵盤 . 的時候{
  if(最后一個輸入框){
    return;
  }
  if(本輸入框有被選中的部分){
    return;
  }
  if(本輸入框無值){
      return;
  }else{
    focus到下一個輸入框;
    if(如果下一個輸入框有值){
      下一個輸入框的所有值被選中暮现;
    }
   }
}

上面兩部分的難點在于:①如何判斷本輸入框有被選中的部分②如何實現(xiàn)下一個輸入框的所有值被選中还绘。

首先解決的是問題②

首先我在了解API的過程中發(fā)現(xiàn)了這樣一個API。HTMLInputElement.setSelectionRange()可以支持設(shè)置input元素的選中范圍送矩。比如從0到0蚕甥,從1到2等等。利用這個API我解決了第二個問題。【備注:后來發(fā)現(xiàn)更好的API是input.select()】

input.setSelectionRange(0,3)贫母;//左閉右開區(qū)間令哟,選中第1個到第三個字。

解決問題問題①的過程受阻

如何判斷本輸入框有本選中的部分。我第一個想到的就是window.getSelection();獲取當(dāng)前Selection對象。但是在火狐下測試選中input的文字竟然總是不正確。換了chrome瀏覽器發(fā)現(xiàn)可以正常獲取input中的選中文字呼伸。

遇到問題寫個測試DEMO

請戳這里:請在firefox和chrome瀏覽器中分別測試

思考過程展示

色拉油老師老師曾經(jīng)說過,很多時候,開發(fā)老手都是憑著經(jīng)驗在使用API括享,實在不行才回去查API文檔搂根。一個是要求寫API的人寫出的API易于記憶,并且有對稱性比如set铃辖、get剩愧,遵循開發(fā)中常用的一些接口的名字。另一個是要求用API的人大膽嘗試敢于揣測娇斩,在使用中發(fā)現(xiàn)問題仁卷,反哺API開發(fā)中的不足。一開始我以為既然有HTMLInputElement.setSelectionRange想當(dāng)然的大膽嘗試getSelectionRange犬第,結(jié)果發(fā)現(xiàn)沒有這個方法锦积。那我繼續(xù)查API,后來饑人谷大群里有消息告訴我firefox中用window.getSelection()無法檢測到input中的selection對象是firefox的bug歉嗓。用HTMLInputElement.selectionStart和HTMLInputElement.selectionEnd丰介。好吧只怪我查HTMLInputElement.setSelectionRange API的時候沒有仔細(xì)看,實際上人家有提到這兩個API鉴分。
至此我終于知道firefox如何查看input的selection對象了基矮。實際上是查不出來selection對象的firefox自身根本不支持。但是我們可以用HTMLInputElement.selectionStart冠场,HTMLInputElement.selectionEnd來曲線救國達(dá)到我們想要的。

漏掉的API:selectionStart本砰,selectionEnd

知識補(bǔ)充:selection對象

Selection對象一般由window.getSelection()
或其他方法產(chǎn)生碴裙。它代表頁面中的文本選區(qū),可能橫跨多個元素点额。文本選區(qū)由用戶拖拽鼠標(biāo)經(jīng)過文字而產(chǎn)生舔株。

參考鏈接


接下來值得思考的問題

js如何控制光標(biāo)移動呢?因為看到windows的ip輸入框按可以達(dá)到的目的还棱,怎么實現(xiàn)呢载慈?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市珍手,隨后出現(xiàn)的幾起案子办铡,更是在濱河造成了極大的恐慌,老刑警劉巖琳要,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寡具,死亡現(xiàn)場離奇詭異,居然都是意外死亡稚补,警方通過查閱死者的電腦和手機(jī)童叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來课幕,“玉大人厦坛,你說我怎么就攤上這事五垮。” “怎么了杜秸?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵放仗,是天一觀的道長。 經(jīng)常有香客問我亩歹,道長匙监,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任小作,我火速辦了婚禮亭姥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘顾稀。我一直安慰自己达罗,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布静秆。 她就那樣靜靜地躺著粮揉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抚笔。 梳的紋絲不亂的頭發(fā)上扶认,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音殊橙,去河邊找鬼辐宾。 笑死,一個胖子當(dāng)著我的面吹牛膨蛮,可吹牛的內(nèi)容都是我干的叠纹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼敞葛,長吁一口氣:“原來是場噩夢啊……” “哼誉察!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惹谐,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤持偏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后豺鼻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體综液,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年儒飒,在試婚紗的時候發(fā)現(xiàn)自己被綠了谬莹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖附帽,靈堂內(nèi)的尸體忽然破棺而出埠戳,到底是詐尸還是另有隱情,我是刑警寧澤蕉扮,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布整胃,位于F島的核電站,受9級特大地震影響喳钟,放射性物質(zhì)發(fā)生泄漏屁使。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一奔则、第九天 我趴在偏房一處隱蔽的房頂上張望蛮寂。 院中可真熱鬧,春花似錦易茬、人聲如沸酬蹋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽范抓。三九已至,卻和暖如春食铐,著一層夾襖步出監(jiān)牢的瞬間匕垫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工虐呻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留年缎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓铃慷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜕该。 傳聞我的和親對象是個殘疾皇子犁柜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容