使用 javascript 更改 css 样式在全屏时不起作用

问题描述 投票:0回答:2

我用这段代码显示/隐藏 div 元素。它工作正常,但是一旦应用程序进入全屏模式,div 元素就会停止更新。也就是说,当全屏显示时,CSS 中的更改不再起作用/更新

document.addEventListener("keypress", function (event) {

    if (event.keyCode == 122) {
        disableCartModal();
    }

    if (event.keyCode == 120) {
        enableCartModal();
    }
});

function disableCartModal() {
    document.getElementById("cart-modal").style.display = "none";
}

function enableCartModal() {
    document.getElementById("cart-modal").style.display = "block";
}
javascript html
2个回答
1
投票

由于

event.keyCode
已被弃用(参见 here),您可以尝试检查
event.key
(参见值 here)。 也许您的浏览器已放弃支持或已为特殊操作保留有问题的键。


0
投票

我尝试了你的代码,发现它在 firefox 和 chrome 中都可以工作......我在控制台中添加了一些调试以确保事情按预期进行。我建议在您的代码中添加一些调试语句,以确保达到您的预期。

还要确保您正在测试的文档部分具有焦点 - 测试,我发现如果选择了框架/开发人员工具,则不会处理该事件。

另请注意,正如 Bastian 指出的那样,这不是在现代浏览器中执行键盘事件的推荐方式。支持可能会消失。

现代方法:

window.addEventListener(
    "keydown",
    (event) => {
        console.log("evt fired: " + event.key);
        if (event.key == "z") {//z
            console.log("z");
            disableCartModal();
        }

        if (event.key == "x") {//X
            console.log("x");
            enableCartModal();
        }
    },
    true
);

我对您的代码进行的实验(添加了调试语句):

<!DOCTYPE html>
<html>

<head>
    <title>keytest</title>

</head>
<body>
    <div>Precart</div>
    <div id="cart-modal">Cart</div>
    <div>Postcart</div>
    <script>
        console.info("script commencing");
        document.addEventListener("keypress", function (event) {
            console.log( "evt fired: "+ event.keyCode);
            if (event.keyCode == 122) {//Z
                console.log( "Z");
                disableCartModal();
            }

            if (event.keyCode == 120) {//X
                console.log( "X");
                enableCartModal();
            }
        });

        function disableCartModal() {
            document.getElementById("cart-modal").style.display = "none";
        }

        function enableCartModal() {
            document.getElementById("cart-modal").style.display = "block";
        }
        console.info("script done");
    </script>
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.