<template>
<div class="container">
<div class="click-area" @click="setInputFoucs">点击区域</div>
<input class="input-area" type="text" ref="input" :placeholder="'输入内容'">
</div>
</template>
<script>
export default {
data(){
return {
}
},
methods: {
setInputFoucs(){
this.$refs.input.foucs();
}
},
}
</script>
上述使input输入框聚焦的逻辑代码,在ios系统的浏览器中并不能生效
原因
:
ios存在安全策略限制
在某个UI事件(例如click, touchend等)的直接执行环境中调用focus能调起键盘;
注意这个直接环境,它的意思是如果你在setTimeout, promise等异步方式中执行了focus,依然是无效的。调不起键盘的!
ios上述限制是出于安全机制的考虑
ios上只有用户交互触发的focus事件才会起效,而延时回调的focus是不会触发的