做拖拽调整div大小的时候发现鼠标在iframe上时无法触发mouseup事件,导致mousemove事件无法注销,鼠标滑动时一直改变div大小
- 解决方法:prevent-events
mdn上关于prevent-events解释:
auto
与pointer-events属性未指定时的表现效果相同,对于SVG内容,该值与visiblePainted效果相同
none
元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器。
只要给iframe 加上 prevent-events就能解决问题
handleResize(e) {
let parent = e.target.parentNode.parentNode
let disx = e.clientX - parent.offsetLeft;
let disy = e.clientY - parent.offsetTop;
this.pointer = 'none'
//富文本区域也要加上
let editerFrame = document.querySelector('#editor iframe')
editerFrame.classList.add('prevent')
document.onmousemove = function (e) {
let left = e.clientX - disx;
let top = e.clientY - disy;
left = left<400?400:left
top = top<200?200:top
parent.style.width = left + 'px';
_this.editorwidth = left + 'px';
_this.editorHeight = top
}
document.onmouseup = function () {
// 鼠标弹起恢复样式
_this.pointer = 'auto'
editerFrame.classList.remove('prevent')
document.onmousemove = document.onmouseup = null;
}
},