1.我做了一個模擬微信聊天的窗口,發(fā)送聊天消息時火狐瀏覽器會出現(xiàn)如下問題:中文輸入時比如輸入拼音:nihao,按enter鍵就直接把nihao發(fā)送到聊天窗口了;而chrome瀏覽器是按enter后先在輸入框出現(xiàn)nihao然后再次按enter才發(fā)送到聊天窗口。
2.前端代碼如下:
<el-input class="chat-input"
type="textarea"
:rows="4"
resize="none"
placeholder="請輸入..."
@keyup.enter.native="submitChat"
v-model="chatInput"></el-input>
<el-button class="btn-enter" size="small" type="primary" @click="submitChat">發(fā)送</el-button>
3.百度有說是把keyup換成keydown(https://www.jb51.net/article/...),我嘗試換成keydown后確實是不會直接就把拼音發(fā)送出去,但是再次按enter時輸入框綁定的值chatInput無法清除,信息發(fā)送出去后輸入框內(nèi)容換行:
下面是提交方法的代碼:
submitChat() {
let useroutput = this.chatInput.trim();
this.chatInput = '';
this.chatData.push({
respondent: 'user',
output: useroutput,
url: ''
});
setTimeout(_ => {
this.scrollLast();
});
this.$axios.get(this.ip + '/kcbonline', {
params: {
text: useroutput,
nlp_revise: this.modulesData["nlp_revise"],
dl_dlf: this.modulesData["dl_dlf"],
dl_dlv2: this.modulesData["dl_dlv2"],
dl_tdl: this.modulesData["dl_tdl"],
dl_dl: this.modulesData["dl_dl"],
dl_dlr: this.modulesData["dl_dlr"],
nlp_datetime: this.modulesData["nlp_datetime"],
nlp_weather: this.modulesData["nlp_weather"],
tp_turing: this.modulesData["tp_turing"],
dl_dlrf: this.modulesData["dl_dlrf"],
}
}).then(res => {
if (res.data.result === 1) {
// let url = data.url ? data.url : '';
let url = '';
setTimeout(_ => {
this.chatData.push({
respondent: 'robot',
//output: data.output,
output: res.data.data,
url: url
});
}, 200);
setTimeout(_ => {
this.scrollLast();
}, 400)
} else {
this.error(res.data.msg);
}
});
},
如果是通過點擊發(fā)送按鈕來發(fā)送的話就可以正常清空:
4.如果是通過enter鍵發(fā)送消息chrome和谷歌都會閃現(xiàn)光標換行之后再發(fā)送到聊天窗口,點擊發(fā)送按鈕觸發(fā)submitChat()方法就沒有這現(xiàn)象,我對比了微信網(wǎng)頁版在兩個瀏覽器中都是正常的,求助大神幫忙解決這問題,謝謝
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 引入樣式 -->
<link rel="stylesheet" >
</head>
<body>
<div id="app">
<el-input v-model="input" type="textarea" v-demo="submitChat" placeholder="請輸入內(nèi)容"></el-input>
<ol>
<li v-for="(item, i) in list" :key="i">{{ item }}</li>
</ol>
</div>
</body>
<!-- 先引入 Vue -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<!-- 引入組件庫 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script src="http://cdn.bootcss.com/rxjs/5.2.0/Rx.min.js"></script>
<script>
const Observable = Rx.Observable;
// 注冊一個全局自定義指令 `v-demo`
Vue.directive('demo', {
bind: function (el, binding, vnode) {
const textarea = el.querySelector('textarea')
const keyup$ = Observable
.fromEvent(textarea, 'keyup')
.filter(t => t.keyCode === 13)
const keydown$ = Observable
.fromEvent(textarea, 'keydown')
.filter(t => t.keyCode === 13)
const source = Observable
.merge(keydown$, keyup$)
.scan((prev, cur) => {
const val = cur.type === 'keyup' ? -1 : 1
const sum = Math.max(0, prev.sum + val)
return {
sum,
submit: prev.sum === 1 && val === -1,
event: cur,
};
}, {
sum: 0,
submit: false,
event: null,
})
.filter(t => t.submit)
.map(t => t.event);
source.subscribe(e => {
const func = binding.value
func(e)
})
}
})
new Vue({
el: '#app',
data: function () {
return {
input: null,
list: [],
}
},
methods: {
submitChat(e) {
const val = e.target.value
this.list.push(val)
}
}
})
</script>
</html>
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。