EventListener使用element封装的兼容方法替代

This commit is contained in:
马云海 mayunhai () 2019-05-28 11:37:11 +08:00
parent 054ed40e07
commit 8d505bc0a0
13 changed files with 59 additions and 37 deletions

View File

@ -7,6 +7,8 @@
</template> </template>
<script> <script>
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
name: 'BackToTop', name: 'BackToTop',
props: { props: {
@ -45,10 +47,10 @@ export default {
} }
}, },
mounted() { mounted() {
window.addEventListener('scroll', this.handleScroll) on(window, 'scroll', this.handleScroll)
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('scroll', this.handleScroll) off(window, 'scroll', this.handleScroll)
if (this.interval) { if (this.interval) {
clearInterval(this.interval) clearInterval(this.interval)
} }

View File

@ -1,4 +1,5 @@
import { debounce } from '@/utils' import { debounce } from '@/utils'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
data() { data() {
@ -12,15 +13,15 @@ export default {
this.chart.resize() this.chart.resize()
} }
}, 100) }, 100)
window.addEventListener('resize', this.__resizeHandler) on(window, 'resize', this.__resizeHandler)
this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) on(this.$_sidebarElm && this.$_sidebarElm, 'transitionend', this.$_sidebarResizeHandler)
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('resize', this.__resizeHandler) off(window, 'resize', this.__resizeHandler)
this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) off(this.$_sidebarElm && this.$_sidebarElm, 'transitionend', this.$_sidebarResizeHandler)
}, },
methods: { methods: {
// use $_ for mixins properties // use $_ for mixins properties

View File

@ -7,6 +7,7 @@
<script> <script>
import Dropzone from 'dropzone' import Dropzone from 'dropzone'
import 'dropzone/dist/dropzone.css' import 'dropzone/dist/dropzone.css'
import { on, off } from 'element-ui/src/utils/dom'
// import { getToken } from 'api/qiniu'; // import { getToken } from 'api/qiniu';
Dropzone.autoDiscover = false Dropzone.autoDiscover = false
@ -145,7 +146,7 @@ export default {
}) })
if (this.couldPaste) { if (this.couldPaste) {
document.addEventListener('paste', this.pasteImg) on(document, 'paste', this.pasteImg)
} }
this.dropzone.on('success', file => { this.dropzone.on('success', file => {
@ -165,7 +166,7 @@ export default {
}) })
}, },
destroyed() { destroyed() {
document.removeEventListener('paste', this.pasteImg) off(document, 'paste', this.pasteImg)
this.dropzone.destroy() this.dropzone.destroy()
}, },
methods: { methods: {

View File

@ -22,6 +22,7 @@
// make search results more in line with expectations // make search results more in line with expectations
import Fuse from 'fuse.js' import Fuse from 'fuse.js'
import path from 'path' import path from 'path'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
name: 'HeaderSearch', name: 'HeaderSearch',
@ -48,9 +49,9 @@ export default {
}, },
show(value) { show(value) {
if (value) { if (value) {
document.body.addEventListener('click', this.close) on(document.body, 'click', this.close)
} else { } else {
document.body.removeEventListener('click', this.close) off(document.body, 'click', this.close)
} }
} }
}, },

View File

@ -115,6 +115,8 @@ import language from './utils/language.js'
import mimes from './utils/mimes.js' import mimes from './utils/mimes.js'
import data2blob from './utils/data2blob.js' import data2blob from './utils/data2blob.js'
import effectRipple from './utils/effectRipple.js' import effectRipple from './utils/effectRipple.js'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
props: { props: {
// name // name
@ -839,15 +841,19 @@ export default {
that.$emit('crop-upload-fail', err, field, ki) that.$emit('crop-upload-fail', err, field, ki)
} }
}) })
},
$_closeHandler(e) {
if (this.value && (e.key == 'Escape' || e.keyCode == 27)) {
this.off()
}
} }
}, },
created() { created() {
// esc // esc
document.addEventListener('keyup', (e) => { on(document, 'keyup', this.$_closeHandler)
if (this.value && (e.key == 'Escape' || e.keyCode == 27)) { },
this.off() beforeDestroy() {
} off(document, 'keyup', this.$_closeHandler)
})
} }
} }
</script> </script>

View File

@ -14,6 +14,7 @@
<script> <script>
import { addClass, removeClass } from '@/utils' import { addClass, removeClass } from '@/utils'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
name: 'RightPanel', name: 'RightPanel',
@ -58,13 +59,13 @@ export default {
}, },
methods: { methods: {
addEventClick() { addEventClick() {
window.addEventListener('click', this.closeSidebar) on(window, 'click', this.closeSidebar)
}, },
closeSidebar(evt) { closeSidebar(evt) {
const parent = evt.target.closest('.rightPanel') const parent = evt.target.closest('.rightPanel')
if (!parent) { if (!parent) {
this.show = false this.show = false
window.removeEventListener('click', this.closeSidebar) off(window, 'click', this.closeSidebar)
} }
}, },
insertToBody() { insertToBody() {

View File

@ -12,6 +12,8 @@
</template> </template>
<script> <script>
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
name: 'Sticky', name: 'Sticky',
props: { props: {
@ -39,15 +41,15 @@ export default {
}, },
mounted() { mounted() {
this.height = this.$el.getBoundingClientRect().height this.height = this.$el.getBoundingClientRect().height
window.addEventListener('scroll', this.handleScroll) on(window, 'scroll', this.handleScroll)
window.addEventListener('resize', this.handleResize) on(window, 'resize', this.handleResize)
}, },
activated() { activated() {
this.handleScroll() this.handleScroll()
}, },
destroyed() { destroyed() {
window.removeEventListener('scroll', this.handleScroll) off(window, 'scroll', this.handleScroll)
window.removeEventListener('resize', this.handleResize) off(window, 'resize', this.handleResize)
}, },
methods: { methods: {
sticky() { sticky() {

View File

@ -1,3 +1,5 @@
import { on, off } from 'element-ui/src/utils/dom'
const vueSticky = {} const vueSticky = {}
let listenAction let listenAction
vueSticky.install = Vue => { vueSticky.install = Vue => {
@ -78,11 +80,11 @@ vueSticky.install = Vue => {
check() check()
} }
window.addEventListener('scroll', listenAction) on(window, 'scroll', listenAction)
}, },
unbind() { unbind() {
window.removeEventListener('scroll', listenAction) off(window, 'scroll', listenAction)
} }
}) })
} }

View File

@ -1,4 +1,5 @@
import './waves.css' import './waves.css'
import { on, off } from 'element-ui/src/utils/dom'
const context = '@@wavesContext' const context = '@@wavesContext'
@ -58,14 +59,14 @@ function handleClick(el, binding) {
export default { export default {
bind(el, binding) { bind(el, binding) {
el.addEventListener('click', handleClick(el, binding), false) on(el, 'click', handleClick(el, binding), false)
}, },
update(el, binding) { update(el, binding) {
el.removeEventListener('click', el[context].removeHandle, false) off(el, 'click', el[context].removeHandle, false)
el.addEventListener('click', handleClick(el, binding), false) on(el, 'click', handleClick(el, binding), false)
}, },
unbind(el) { unbind(el) {
el.removeEventListener('click', el[context].removeHandle, false) off(el, 'click', el[context].removeHandle, false)
el[context] = null el[context] = null
delete el[context] delete el[context]
} }

View File

@ -28,6 +28,7 @@
<script> <script>
import ScrollPane from './ScrollPane' import ScrollPane from './ScrollPane'
import path from 'path' import path from 'path'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
components: { ScrollPane }, components: { ScrollPane },
@ -55,9 +56,9 @@ export default {
}, },
visible(value) { visible(value) {
if (value) { if (value) {
document.body.addEventListener('click', this.closeMenu) on(document.body, 'click', this.closeMenu)
} else { } else {
document.body.removeEventListener('click', this.closeMenu) off(document.body, 'click', this.closeMenu)
} }
} }
}, },

View File

@ -1,4 +1,5 @@
import store from '@/store' import store from '@/store'
import { on, off } from 'element-ui/src/utils/dom'
const { body } = document const { body } = document
const WIDTH = 992 // refer to Bootstrap's responsive design const WIDTH = 992 // refer to Bootstrap's responsive design
@ -12,10 +13,10 @@ export default {
} }
}, },
beforeMount() { beforeMount() {
window.addEventListener('resize', this.$_resizeHandler) on(window, 'resize', this.$_resizeHandler)
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('resize', this.$_resizeHandler) off(window, 'resize', this.$_resizeHandler)
}, },
mounted() { mounted() {
const isMobile = this.$_isMobile() const isMobile = this.$_isMobile()

View File

@ -1,4 +1,5 @@
import { debounce } from '@/utils' import { debounce } from '@/utils'
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
data() { data() {
@ -35,10 +36,10 @@ export default {
}, 100)() }, 100)()
}, },
$_initResizeEvent() { $_initResizeEvent() {
window.addEventListener('resize', this.$_resizeHandler) on(window, 'resize', this.$_resizeHandler)
}, },
$_destroyResizeEvent() { $_destroyResizeEvent() {
window.removeEventListener('resize', this.$_resizeHandler) off(window, 'resize', this.$_resizeHandler)
}, },
$_sidebarResizeHandler(e) { $_sidebarResizeHandler(e) {
if (e.propertyName === 'width') { if (e.propertyName === 'width') {
@ -47,10 +48,10 @@ export default {
}, },
$_initSidebarResizeEvent() { $_initSidebarResizeEvent() {
this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]
this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) on(this.$_sidebarElm && this.$_sidebarElm, 'transitionend', this.$_sidebarResizeHandler)
}, },
$_destroySidebarResizeEvent() { $_destroySidebarResizeEvent() {
this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) off(this.$_sidebarElm && this.$_sidebarElm, 'transitionend', this.$_sidebarResizeHandler)
} }
} }
} }

View File

@ -76,6 +76,8 @@
<script> <script>
import { validUsername } from '@/utils/validate' import { validUsername } from '@/utils/validate'
import SocialSign from './components/SocialSignin' import SocialSign from './components/SocialSignin'
// eslint-disable-next-line
import { on, off } from 'element-ui/src/utils/dom'
export default { export default {
name: 'Login', name: 'Login',
@ -125,7 +127,7 @@ export default {
} }
}, },
created() { created() {
// window.addEventListener('storage', this.afterQRScan) // on(window, 'storage', this.afterQRScan)
}, },
mounted() { mounted() {
if (this.loginForm.username === '') { if (this.loginForm.username === '') {
@ -135,7 +137,7 @@ export default {
} }
}, },
destroyed() { destroyed() {
// window.removeEventListener('storage', this.afterQRScan) // off(window, 'storage', this.afterQRScan)
}, },
methods: { methods: {
checkCapslock({ shiftKey, key } = {}) { checkCapslock({ shiftKey, key } = {}) {