【发布时间】:2021-05-30 04:16:47
【问题描述】:
简介 我是 Vue.js 的新手,目前正在从事我的大学项目,该项目需要在 Vue.js 中进行碰撞检测。
这里是工作代码的代码笔链接: https://codepen.io/dropinks/pen/MrzPXB
我正在尝试在 vue.js 中做同样的事情。但我得到一个 ReferenceError '文档未定义'
这是我所做的一个实现:
完整代码:
<div class="container">
<div class="rectangle-1" id="rect">Hover Me </div>
<div class="rectangle-2" id="dragMe">Drag Me</div>
</div>
脚本:
<script>
export default {
data:{
dragMe: '',
rect:''
},
created:function(){
this.myFunction()
},
methods:{
myFunction:function(){
rect = document.getElementById("rect");
dragMe = document.getElementById("dragMe");
initDrag({
element: dragMe,
drag: function(){isCollapsed(dragMe, rect);},
});
},
isCollapsed: function(dragMe, rect){
var object_1 = dragMe.getBoundingClientRect();
var object_2 = rect.getBoundingClientRect();
if (object_1.left < object_2.left + object_2.width && object_1.left + object_1.width > object_2.left &&
object_1.top < object_2.top + object_2.height && object_1.top + object_1.height > object_2.top) {
rect.classList.add("collide");
}
else{
rect.classList.remove("collide");
}
},
initDrag: function(options){
var element = options.element;
var mousedown, mouseup, mousemove,
dragStart, initX, initY,
offsetLeft, offsetTop;
function mouseMove(ev){
if(dragStart){
var newX = offsetLeft + (ev.pageX - initX);
var newY = offsetTop + (ev.pageY - initY);
element.style.top = newY+"px";
element.style.left = newX+"px";
options.drag.call();
}
}
function mouseUp(ev){
dragStart = false;
document.removeEventListener("mousemove", mouseMove, false);
document.removeEventListener("mouseup", mouseUp, false);
options.stop.call();
}
function mouseDown(ev){
initX = ev.pageX;
initY = ev.pageY;
dragStart = true;
offsetLeft = element.offsetLeft;
offsetTop = element.offsetTop;
document.addEventListener("mousemove", function(ev){mouseMove(ev)}, false);
document.addEventListener("mouseup", function(ev){mouseUp(ev)}, false);
options.start.call();
}
element.addEventListener("mousedown", function(ev){mouseDown(ev)}, false);
}
}
}
</script>
这是来自 nuxt.js 的错误页面图片
【问题讨论】:
-
这能回答你的问题吗? "document is not defined" in Nuxt.js
-
这是解释的一部分,我在下面也包含了一个答案和一个工作示例。
标签: javascript vue.js nuxt.js collision-detection