Safari+contentedtable에서 일본어로 중복 입력된 증상을 변환하는 회피법
8816 단어 JavaScriptcontenteditableVue.js
<span>
'node'를 넣어서 node를 만지작거리면 일본어 입력을 할 때의 전환이 중복 입력되는 현상을 만날 수 있다.Chrome과 Firefox에서 재현되지 않았습니다.<template>
<div class="content-editable-page">
<div contenteditable="true" class="editable"
ref="editable"
@keyup="moveCaret"
><p>test</p></div>
</div>
</template>
<script>
import Vue from 'vue'
export default Vue.extend({
components: {
},
data () {
return {
}
},
computed: {
},
methods: {
moveCaret () {
const anchor = document.createElement('span')
const sel = window.getSelection()
const range = sel.getRangeAt(0)
range.insertNode(anchor)
const pos = anchor.getBoundingClientRect()
anchor.parentElement.removeChild(anchor)
}
},
mounted() {
}
})
</script>
피하는 좋은 방법이 떠오르지 않아 IME 전환 기간 좌표 위치를 얻지 않기 위해 컴포지션을 보기로 했다.이렇게 하면 중복 입력되지 않지만 전환 과정에서 공의 위치를 모르는 것이 단점...<template>
<div class="content-editable-page">
<div contenteditable="true" class="editable"
ref="editable"
@compositionstart="compositionstart"
@compositionend="compositionend"
@keyup="moveCaret"
><p>test</p></div>
</div>
</template>
<script>
import Vue from 'vue'
export default Vue.extend({
components: {
},
data () {
return {
compositing: false
}
},
computed: {
},
methods: {
moveCaret () {
if (!this.compositing) {
const anchor = document.createElement('span')
const sel = window.getSelection()
const range = sel.getRangeAt(0)
range.insertNode(anchor)
const pos = anchor.getBoundingClientRect()
anchor.parentElement.removeChild(anchor)
}
},
compositionstart () {
this.compositing = true
},
compositionend () {
this.compositing = false
}
},
mounted() {
}
})
</script>
Reference
이 문제에 관하여(Safari+contentedtable에서 일본어로 중복 입력된 증상을 변환하는 회피법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/zaru/items/3c504211e67a2bb10ca9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)