整理文档,搜刮出一个vue2.0的contextmenu右键弹出菜单的实例代码,稍微整理精简一下做下分享。
1.事情对象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
></
title
>
<
meta
charset
=
"utf-8"
>
<
script
type
=
"text/javascript"
>
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(event){
console.log(event); //event 这个就是事件对象了
}
}
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
"box"
>
<
input
type
=
"button"
value
=
"按钮"
@
click
=
"show($event)"
>
</
div
>
</
body
>
</
html
>
|
通过show($event)把事件对象传到方法里
2.事件冒泡
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
></
title
>
<
meta
charset
=
"utf-8"
>
<
script
type
=
"text/javascript"
>
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(){
alert(1);
},
show1:function(){
alert(2);
}
}
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
"box"
>
<
div
@
click
=
"show1()"
>
<
input
type
=
"button"
value
=
"按钮"
@
click
=
"show()"
>
</
div
>
</
div
>
</
body
>
</
html
>
|
点击按钮的话他会,执行show ,show1方法,依次弹出1,2。
怎么来阻止
<1> 利用我们上面讲过的event对象: event.cancelBubble = true; //这种就阻止了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
></
title
>
<
meta
charset
=
"utf-8"
>
<
script
type
=
"text/javascript"
>
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(event){
alert(1);
event.cancelBubble = true;
},
show1:function(){
alert(2);
}
}
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
"box"
>
<
div
@
click
=
"show1()"
>
<
input
type
=
"button"
value
=
"按钮"
@
click
=
"show($event)"
>
</
div
>
</
div
>
</
body
>
</
html
>
|
<2>利用vue的方法阻止冒泡:给HTML元素绑定click事件的时候,改为@click.stop="show()"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
></
title
>
<
meta
charset
=
"utf-8"
>
<
script
type
=
"text/javascript"
>
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(event){
alert(1);
//event.cancelBubble = true;
},
show1:function(){
alert(2);
}
}
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
"box"
>
<
div
@
click
=
"show1()"
>
<
input
type
=
"button"
value
=
"按钮"
@
click.stop
=
"show()"
>
</
div
>
</
div
>
</
body
>
</
html
>
|
3.默认行为
比如contextmenu右键菜单
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<!DOCTYPE html>
<
html
>
<
head
>
<
title
></
title
>
<
meta
charset
=
"utf-8"
>
<!-- // <script src="vue.js"></script> -->
<
script
type
=
"text/javascript"
>
window.onload = function(){
var vm = new Vue({
el:'#box',
methods:{
show:function(){
alert(1);
},
show1:function(){
alert(2);
}
}
});
}
</
script
>
</
head
>
<
body
>
<
div
id
=
"box"
>
<
input
type
=
"button"
value
=
"按钮"
@
contextmenu
=
"show()"
>
<
input
type
=
"button"
value
=
"按钮1"
@
contextmenu.prevent
=
"show1()"
>
<
p
>//按钮右击点下去会依次出现 弹窗 1, 还有右击的默认菜单</
p
>
<
p
>//按钮1右击只出现 弹窗 2</
p
>
</
div
>
</
body
>
</
html
>
|