javascript - 无法专注于 div(如果我用鼠标滚动它不会滚动,除非我单击内容)

标签 javascript html css

所以我有一个小网站,当我点击一个链接时它会显示 div,所以窗口在前面。

只需单击绿色的大框,您就会看到打开的窗口。现在的问题是,如果您打开它并尝试滚动,但没有单击内容,它不会滚动,而它应该滚动。我该如何解决这个问题?

调用的代码是这个,动画的东西是基于关键帧的。

function displayBox(boxId, closeButtonId) {
    displayButton(closeButtonId);
    var Box = document.getElementById(boxId);
    Box.setAttribute('class', 'boxIn');
    Box.setAttribute('tabIndex', '0');
}
function displayButton(buttonId) {
    var Box = document.getElementById(buttonId);
    Box.setAttribute('class', 'buttonIn');
}           
function hideBox(boxId, closeButtonId) {
    var Box = document.getElementById(boxId);
    Box.setAttribute('class', 'boxOut');
    setTimeout(function(){var Box = document.getElementById(boxId);
    Box.setAttribute('class', 'invisible');},500);
    hideButton(closeButtonId);
}
function hideButton(buttonId) {
    var Box = document.getElementById(buttonId);
    Box.setAttribute('class', 'invisible');
}

提前致谢

最佳答案

您需要将焦点设置在新弹出窗口上。尝试将 Box.focus() 调用添加到 displayBox 函数:

function displayBox(boxId, closeButtonId) {
    displayButton(closeButtonId);
    var Box = document.getElementById(boxId);
    Box.setAttribute('class', 'boxIn');
    Box.setAttribute('tabIndex', '0');
    setTimeout(function() {
        Box.focus();
    }, 300);
}

请注意,由于您为模态弹出窗口设置动画,因此您需要在动画完成 之后关注内容。实现它的最简单方法是在超时等于动画持续时间后调用 focus(),在您的情况下为 300ms。如果你不想在 JS 函数中硬编码动画时间,那么你应该监听 animationend 事件。

关于javascript - 无法专注于 div(如果我用鼠标滚动它不会滚动,除非我单击内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875231/

相关文章:

javascript - 如何扩展 TypeScript 接口(interface)并对其进行公正处理

javascript - 防止文本在包含各种子元素的 div 中剪切,而不调整文本大小?

javascript - 从选择中获取自定义属性

html - 仅使用 CSS 在悬停时显示下拉菜单并在单击时关闭

javascript - 悬停时更改表格行和列的背景

javascript - 预加载 bootstrap 字形图标

javascript - 在 React 中使用高阶组件来格式化子组件

javascript - Electron Jquery click 不适用于表格元素

javascript - 使用 JavaScript 对象的猜人程序

jquery - 如何让背景图片可点击使用js