KonvaJS:event.preventDefault 不是函数
KonvaJS: event.preventDefault is not a function
现在我在玩KonvaJS。我在 shape
上设置了 click
事件侦听器。当我单击 shape
时,将调用侦听器。在我的侦听器中,我正在调用 event.preventDefault()
方法来停止触发其他事件。但是当我这样做时它说:
Uncaught TypeError: event.preventDefault is not a function
我不知道我错过了什么。这是我的 code :
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.rawgit.com/konvajs/konva/0.9.5/konva.min.js"></script>
<meta charset="utf-8">
<title>Konva Scale Animation Demo</title>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #F0F0F0;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var width = window.innerWidth;
var height = window.innerHeight;
var stage = new Konva.Stage({
container: 'container',
width: width,
height: height
});
var layer = new Konva.Layer();
stage.add(layer);
var gArrow2 = new Image();
var circle2 = new Konva.Image({
x: 60, //on canvas
y: 60,
image: gArrow2,
name: 'abc',
id: 'xyz',
draggable:true
});
circle2.on('click',function(event){
event.preventDefault()
console.log(e.type);
});
circle2.on('mouseup',function(event){
event.preventDefault()
console.log(e.type);
});
gArrow2.onload = function() {
layer.add(circle2);
layer.draw();
}
gArrow2.src = 'http://konvajs.github.io/assets/snake.png';
var period = 1500;
var amplitude = 10;
var centerX = stage.getWidth() / 2;
var centerY = stage.getHeight() / 2;
var anim = new Konva.Animation(function(frame) {
circle2.setY(amplitude * Math.sin(frame.time * 2 * Math.PI / period) + centerY);
}, layer);
anim.start();
</script>
</body>
</html>
KonvaJS 的 on
处理程序似乎没有直接给你浏览器事件,而是一个看起来像这样的对象:.
浏览器的原始事件存储在evt
属性.
在您的代码中,尝试将 event.preventDefault()
替换为 event.evt.preventDefault()
:http://plnkr.co/edit/tCESd42r67TzeuLiISxU。
如果您不想触发其他事件,那么 KonvaJS
有一个名为 cancelBubble
的 属性 for event
,您可以将其设置为 true
。通过使用这个不需要寻找 event.preventDefault()
功能。下面是plunkr来演示。
triangle.on('mouseup', function(e) {
e.cancelBubble = true;
console.log('Triangle mouse up');
});
现在我在玩KonvaJS。我在 shape
上设置了 click
事件侦听器。当我单击 shape
时,将调用侦听器。在我的侦听器中,我正在调用 event.preventDefault()
方法来停止触发其他事件。但是当我这样做时它说:
Uncaught TypeError: event.preventDefault is not a function
我不知道我错过了什么。这是我的 code :
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.rawgit.com/konvajs/konva/0.9.5/konva.min.js"></script>
<meta charset="utf-8">
<title>Konva Scale Animation Demo</title>
<style>
body {
margin: 0;
padding: 0;
overflow: hidden;
background-color: #F0F0F0;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
var width = window.innerWidth;
var height = window.innerHeight;
var stage = new Konva.Stage({
container: 'container',
width: width,
height: height
});
var layer = new Konva.Layer();
stage.add(layer);
var gArrow2 = new Image();
var circle2 = new Konva.Image({
x: 60, //on canvas
y: 60,
image: gArrow2,
name: 'abc',
id: 'xyz',
draggable:true
});
circle2.on('click',function(event){
event.preventDefault()
console.log(e.type);
});
circle2.on('mouseup',function(event){
event.preventDefault()
console.log(e.type);
});
gArrow2.onload = function() {
layer.add(circle2);
layer.draw();
}
gArrow2.src = 'http://konvajs.github.io/assets/snake.png';
var period = 1500;
var amplitude = 10;
var centerX = stage.getWidth() / 2;
var centerY = stage.getHeight() / 2;
var anim = new Konva.Animation(function(frame) {
circle2.setY(amplitude * Math.sin(frame.time * 2 * Math.PI / period) + centerY);
}, layer);
anim.start();
</script>
</body>
</html>
KonvaJS 的 on
处理程序似乎没有直接给你浏览器事件,而是一个看起来像这样的对象:
浏览器的原始事件存储在evt
属性.
在您的代码中,尝试将 event.preventDefault()
替换为 event.evt.preventDefault()
:http://plnkr.co/edit/tCESd42r67TzeuLiISxU。
如果您不想触发其他事件,那么 KonvaJS
有一个名为 cancelBubble
的 属性 for event
,您可以将其设置为 true
。通过使用这个不需要寻找 event.preventDefault()
功能。下面是plunkr来演示。
triangle.on('mouseup', function(e) {
e.cancelBubble = true;
console.log('Triangle mouse up');
});