Skip to content

Commit 9d1efc6

Browse files
committed
更新右键菜单逻辑
1 parent 40ab2fd commit 9d1efc6

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

debug/contextmenu.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,22 @@ window.contextmenu = function (bindElement, contextmenuElement) {
2323

2424
let isParent = function(element, parentElement) {
2525
do if (element === parentElement) return true;
26-
while(document != (element = element.parentNode))
26+
while(element !== null && document != (element = element.parentNode))
2727
return false;
2828
}
2929

3030
let _closeContextmenu = function (e) {
31-
if (_getContextmenuState() && !isParent(e.target,contextmenuElement)) {
31+
if (_getContextmenuState() && !isParent(e.target, contextmenuElement)) {
32+
e.stopPropagation();
33+
e.preventDefault();
3234
contextmenuElement.style.display = 'none';
33-
if (e.type === 'click') e.stopPropagation();
3435
}
3536
}
3637

3738
window.addEventListener('click', _closeContextmenu, true);
3839
window.addEventListener('contextmenu', _closeContextmenu, true);
3940
window.addEventListener('scroll', _closeContextmenu, true);
41+
window.addEventListener('touchmove', _closeContextmenu, true);
4042

4143

4244
bindElement.oncontextmenu = function (e) {

src/contextmenu.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,22 +52,26 @@ class Contextmenu {
5252

5353
let isParent = (element, parentElement) => {
5454
do if (element === parentElement) return true;
55-
while(document != (element = element.parentNode))
55+
while(element !== null && document != (element = element.parentNode))
5656
return false;
5757
}
5858

5959
let _closeContextmenu = function (e) {
6060
if (_getContextmenuState() && !isParent(e.target,element)) {
61+
e.stopPropagation();
62+
e.preventDefault();
6163
element.style.display = 'none';
6264
if (pause) element.bulletScreenEvent.setPlayState(true);
6365
element.bulletScreenEvent.setBulletScreen({ _contextmenu: false }, false);
6466
element.bulletScreenEvent = null;
65-
if (e.type === 'click') e.stopPropagation();
6667
}
6768
}
69+
6870
window.addEventListener('click', _closeContextmenu, true);
6971
window.addEventListener('contextmenu', _closeContextmenu, true);
7072
window.addEventListener('scroll', _closeContextmenu, true);
73+
window.addEventListener('touchmove', _closeContextmenu, true);
74+
7175

7276
generalEngine.bind('contextmenu', function (e) {
7377
e.setBulletScreen({ layer: layer, _contextmenu: true }, layer != null);

0 commit comments

Comments
 (0)