gpt4 book ai didi

javascript - 是否可以使用标准 HTML 按钮发出事件?

转载 作者:行者123 更新时间:2023-11-29 11:01:39 25 4
gpt4 key购买 nike

也许这是一个非常愚蠢的问题,但我想不通。

基本上我想做的就是在触摸屏幕时发出一个事件(使用我们订购的谷歌纸板模型上的物理按钮)。无法弄清楚如何进行“全屏触摸”,所以我在 a 场景之外制作了一个按钮元素。这绝对位于按钮点击屏幕的位置,并且在单击时(通过鼠标)控制台记录 - 所以我知道按钮有效。但是,尝试发出事件或 setAttribute 不会执行任何操作。

我做错了什么,还是有其他更适合的方法?

代码如下:

<body>
<button id="nav-btn" class="btn btn-primary">Menu</button>
<a-scene id="scene">

和:

AFRAME.registerComponent('nav', {
schema: {},

init: function () {
var navBtn = document.querySelector('#nav-btn');
var btnEls = document.querySelectorAll('.link');

navBtn.addEventListener('click', function () {
console.log('clicked');

for (var i = 0; i < btnEls.length; i++) {
console.log(btnEls[i]);
btnEls[i].emit('menuFade');
}
});
},
});

顺便说一句,这在使用 a 实体作为按钮时有效,但我也找不到如何使它作为物理按钮工作!?

感谢您的帮助或建议!

最佳答案

如果您关心的是确定何时按下 Google Cardboard 上的物理按钮,那么您甚至不需要按钮元素。将“click”或“touchstart”处理程序附加到 window 就可以了:

window.addEventListener('touchstart', function(evt) {
console.log('there we go')
})

请注意,emit 不是普通的 JS 发出事件的方式,而是 A-Frame 特定的功能,这就是为什么它不能通过按钮工作。

您可以使用 dispatchEventCustomEvent 代替:

window.addEventListener('touchstart', function(evt) {
console.log('there we go')
window.dispatchEvent(new CustomEvent('menuFade'))
})

您可能需要将发出事件的对象更改为 a-scene 内的对象,但它应该可以工作。

关于javascript - 是否可以使用标准 HTML 按钮发出事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45992064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com