欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端如何監(jiān)聽手機(jī)鍵盤是否彈起示例詳解

 更新時(shí)間:2024年02月04日 08:27:47   作者:我就不思  
實(shí)際應(yīng)用中我們會(huì)遇到監(jiān)聽按鍵輸入和鼠標(biāo)點(diǎn)擊事件,這篇文章主要介紹了前端如何監(jiān)聽手機(jī)鍵盤是否彈起的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

摘要:

開發(fā)移動(dòng)端中,經(jīng)常會(huì)遇到一些交互需要通過判斷手機(jī)鍵盤是否被喚起來做的,說到判斷手機(jī)鍵盤彈起和收起,應(yīng)該都知道,安卓和ios判斷手機(jī)鍵盤是否彈起的寫法是有所不同的,下面討論總結(jié)一下兩端的區(qū)別以及上線方式~

HTML:

IOS端可以通過 focusin focusout實(shí)現(xiàn)

window.addEventListener('focusin', () => {
  // 鍵盤彈出事件處理
  alert("ios鍵盤彈出事件處理")
});
window.addEventListener('focusout', () => {
  // 鍵盤收起事件處理
  alert("ios鍵盤收起事件處理")
})

安卓只能通過 resize 來判斷屏幕大小是否發(fā)生變化來判斷

由于某些 Android 手機(jī)收起鍵盤,輸入框不會(huì)失去焦點(diǎn),所以不能通過聚焦和失焦事件來判斷。但由于窗口會(huì)變化,所以可以通過監(jiān)聽窗口高度的變化來間接監(jiān)聽鍵盤的彈起與收回。

const innerHeight = window.innerHeight
window.addEventListener('resize', () => {
  const newInnerHeight = window.innerHeight;
  if (innerHeight > newInnerHeight) {
    // 鍵盤彈出事件處理
    alert("android 鍵盤彈出事件");     
  } else {
    // 鍵盤收起事件處理
    alert("android 鍵盤收起事件處理")
  }
})

VUE:

鍵盤事件總結(jié):

  • @keydown:監(jiān)聽鍵盤按下事件。
  • @keyup:監(jiān)聽鍵盤抬起事件。
  • @keypress:監(jiān)聽鍵盤按鍵事件,包括按下和抬起。
  • @keydown.enter:監(jiān)聽回車鍵按下事件。
  • @keydown.tab:監(jiān)聽Tab鍵按下事件。
  • @keydown.esc:監(jiān)聽Esc鍵按下事件。
  • @keydown.space:監(jiān)聽空格鍵按下事件。
  • @keydown.left:監(jiān)聽左箭頭鍵按下事件。
  • @keydown.right:監(jiān)聽右箭頭鍵按下事件。
  • @keydown.up:監(jiān)聽上箭頭鍵按下事件。
  • @keydown.down:監(jiān)聽下箭頭鍵按下事件。
  • @keydown.delete:監(jiān)聽刪除鍵按下事件。
  • @keydown.backspace:監(jiān)聽退格鍵按下事件。
  • @keydown.[key]:監(jiān)聽其他特定鍵按下事件,例如@keydown.a監(jiān)聽字母A鍵按下事件。

@keydown@keyup指令來綁定鍵盤按鍵事件

<template>
  <div>
    <input type="text" @keydown.enter="handleEnterKey" />
  </div>
</template>

<script>
export default {
  methods: {
    handleEnterKey() {
      // 處理回車鍵按下事件
    },
  },
};
</script>

v-on指令來綁定鍵盤按鍵事件

<template>
  <div>
    <input type="text" v-on:keydown.enter="handleEnterKey" />
  </div>
</template>

<script>
export default {
  methods: {
    handleEnterKey() {
      // 處理回車鍵按下事件
    },
  },
};
</script>

window.addEventListener來全局監(jiān)聽鍵盤按鍵事件

<template>
  <div></div>
</template>

<script>
export default {
  mounted() {
    window.addEventListener('keydown', this.handleKeyDown);
  },
  beforeUnmount() {
    window.removeEventListener('keydown', this.handleKeyDown);
  },
  methods: {
    handleKeyDown(event) {
      if (event.key === 'Enter') {
        // 處理回車鍵按下事件
      }
    },
  },
};
</script>

vue-shortkey插件來監(jiān)聽鍵盤按鍵

<template>
  <div>
    <input type="text" v-shortkey.enter="handleEnterKey" />
  </div>
</template>

<script>
import VueShortkey from 'vue-shortkey';

export default {
  directives: {
    shortkey: VueShortkey,
  },
  methods: {
    handleEnterKey() {
      // 處理回車鍵按下事件
    },
  },
};
</script>

keydown事件監(jiān)聽器

<template>
  <div>
    <input type="text" ref="input" />
  </div>
</template>

<script>
export default {
  mounted() {
    this.$refs.input.addEventListener('keydown', this.handleKeyDown);
  },
  beforeUnmount() {
    this.$refs.input.removeEventListener('keydown', this.handleKeyDown);
  },
  methods: {
    handleKeyDown(event) {
      if (event.key === 'Enter') {
        // 處理回車鍵按下事件
      }
    },
  },
};
</script>

監(jiān)聽事件組件封裝:

<template>
  <div></div>
</template>

<script>
export default {
  name: 'KeyboardEventListener',
  props: {
    event: {
      type: String,
      required: true,
    },
  },
  mounted() {
    window.addEventListener(this.event, this.handleEvent);
  },
  beforeUnmount() {
    window.removeEventListener(this.event, this.handleEvent);
  },
  methods: {
    handleEvent(event) {
      this.$emit('keydown', event);
    },
  },
};
</script>

可以在需要監(jiān)聽鍵盤事件的地方引入并使用KeyboardEventListener組件,并通過event屬性傳遞需要監(jiān)聽的事件名稱,同時(shí)監(jiān)聽keydown事件來處理具體的按鍵邏輯。

<template>
  <div>
    <KeyboardEventListener event="keydown.enter" @keydown="handleEnterKey" />
  </div>
</template>

<script>
import KeyboardEventListener from '@/components/KeyboardEventListener.vue';

export default {
  components: {
    KeyboardEventListener,
  },
  methods: {
    handleEnterKey(event) {
      // 處理回車鍵按下事件
    },
  },
};
</script>

通過封裝組件,可以在需要監(jiān)聽鍵盤事件的地方直接引入并使用,避免重復(fù)的監(jiān)聽和處理邏輯,提高代碼的可維護(hù)性和復(fù)用性

REACT:

在需要進(jìn)行監(jiān)聽的Dom上添加 onKeyDown 方法:

<Button
     className='btn-add'
     type="primary"
     icon="search"
     onKeyDown={(e)=>this.handleKeyDown(e)}
     onClick={()=>this.handleSearch()}>
     {LangMapping.Search}
 </Button>

定義 handleKeyDown 方法及事件處理:

//keyCode 38=up arrow  40=down arrow   13=Enter
handleKeyDown = (e) => {
    if (e.keyCode === 13) {
        console.log("按下了Enter鍵")
        this.handleSearch();
    }
}

在 componentDidMount 鉤子中定義鍵盤監(jiān)聽事件:

componentDidMount() {
    document.addEventListener('keydown',this.handleKeyDown);
}

在 componentWillUnmount 鉤子中移除鍵盤監(jiān)聽事件:

componentWillUnmount() {
    document.removeEventListener('keydown',this.handleKeyDown);
}

ANGULAR:

檢測鍵盤按下事件:可以使用ng-keydown指令。該指令可以監(jiān)聽指定元素上的鍵盤按下事件,并在按下事件發(fā)生時(shí)調(diào)用指定的表達(dá)式

<input type="text" ng-keydown="handleKeyDown($event)">

我們在一個(gè)文本輸入框上使用了ng-keydown指令,并將handleKeyDown函數(shù)綁定到該事件上。當(dāng)用戶按下鍵盤上的任意鍵時(shí),handleKeyDown函數(shù)將被調(diào)用。

$scope.handleKeyDown = function(event) {
  console.log('Key down event:', event);
};

handleKeyDown函數(shù)接收一個(gè)事件對(duì)象作為參數(shù)。我們可以通過該事件對(duì)象來獲取按下的鍵的信息,例如鍵碼(keyCode)、鍵的字符表示(key)等

檢測按鍵事件:可以使用ng-keypress指令。該指令可以監(jiān)聽指定元素上的按鍵事件,并在按鍵事件發(fā)生時(shí)調(diào)用指定的表達(dá)式

<input type="text" ng-keypress="handleKeyPress($event)">

在一個(gè)文本輸入框上使用了ng-keypress指令,并將handleKeyPress函數(shù)綁定到該事件上。當(dāng)用戶按下并且釋放某個(gè)鍵時(shí),handleKeyPress函數(shù)將被調(diào)用

$scope.handleKeyPress = function(event) {
  console.log('Key press event:', event);
};

ng-keydown指令類似,handleKeyPress函數(shù)也接收一個(gè)事件對(duì)象作為參數(shù),我們可以通過該事件對(duì)象來獲取按下的鍵的信息

區(qū)分按鍵類型:

有時(shí)候,我們可能需要區(qū)分按下的是哪種類型的按鍵,例如字母鍵、數(shù)字鍵、功能鍵等。在AngularJS中,我們可以使用事件對(duì)象的屬性來區(qū)分按鍵類型

  • event.key:按下的鍵的字符表示,例如’a’、’0’、’Enter’等。
  • event.keyCode:按下的鍵的鍵碼表示,對(duì)應(yīng)于鍵盤上每個(gè)鍵的唯一標(biāo)識(shí)。
  • event.shiftKey:按下了Shift鍵。
  • event.ctrlKey:按下了Ctrl鍵。
  • event.altKey:按下了Alt鍵。

通過檢查事件對(duì)象的這些屬性,我們可以根據(jù)需要來區(qū)分按鍵類型

$scope.handleKeyDown = function(event) {
  if (event.key === 'Enter') {
    console.log('Enter key pressed');
  } else if (event.keyCode >= 48 && event.keyCode <= 57) {
    console.log('Number key pressed');
  } else {
    console.log('Other key pressed');
  }
};

們根據(jù)按下的鍵的字符表示和鍵碼表示來區(qū)分按鍵類型。如果按下的是Enter鍵,則輸出”Enter key pressed”;如果按下的是數(shù)字鍵,則輸出”Number key pressed”;如果按下的是其他鍵,則輸出”Other key pressed”。

總結(jié)

到此這篇關(guān)于前端如何監(jiān)聽手機(jī)鍵盤是否彈起的文章就介紹到這了,更多相關(guān)前端監(jiān)聽手機(jī)鍵盤是否彈起內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論