emotional12138 发表于 2025-1-2 14:42:47

.click()触发div元素失效

本帖最后由 emotional12138 于 2025-1-2 14:56 编辑

网址:https://sudoku.com/zh
需求描述:我希望实现一个快捷键功能,点击空格键后切换数独的输入模式和备注模式,具体而言就是点击空格键后触发一个div元素的.click()。
问题描述:我写的油猴脚本可以正确通过document.querySelector()找到我希望点击的div元素,但是在触发.click()时没有效果。
油猴代码:
```javascript
// ==UserScript==
// @name         数独快捷键
// @namespace    http://tampermonkey.net/
// @version      2024-12-17
// @descriptiontry to take over the world!
// @match      *://sudoku.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=sudoku.com
// @grant      none
// ==/UserScript==

(function() {
    'use strict';

    // 监听按键事件
    document.addEventListener('keydown', function(event) {
      // 检查是否按下了空格键
      if (event.code === 'Space') {
            event.preventDefault(); // 阻止默认空格滚动行为

            // 找到目标元素
            const targetElement = document.querySelector("#game-controls > div:nth-child(3) > div.game-controls-item.game-controls-pencil")

            // 如果元素存在,触发点击
            if (targetElement) {
                targetElement.click();
                console.log('Element clicked!');    //控制台可以正确输出该行,但是上行的.click()无法正确触发
            } else {
                console.log('Target element not found.');
            }
      }
    });
})();
```

李恒道 发表于 2025-1-2 14:42:48

var event = new Event("mousedown");
$0.dispatchEvent(event);

emotional12138 发表于 2025-1-2 14:50:43

本帖最后由 emotional12138 于 2025-1-2 14:54 编辑

为什么发表帖子时候的使用markdown编辑器似乎就发不出内容

李恒道 发表于 2025-1-2 15:35:28

https://learn.scriptcat.org/%E6%B2%B9%E7%8C%B4%E6%95%99%E7%A8%8B/%E4%B8%AD%E7%BA%A7%E7%AF%87/%E5%85%83%E7%B4%A0%E8%A7%84%E5%88%99%E6%A0%A1%E9%AA%8C%E5%92%8C%E6%A3%80%E6%B5%8B%E7%9A%84%E8%A7%A6%E5%8F%91/

没有做元素触发,可以根据框架进行处理或者diapatch触发

emotional12138 发表于 2025-1-3 18:51:12

李恒道 发表于 2025-1-2 21:21
var event = new Event("mousedown");
$0.dispatchEvent(event);

有效!!感谢道哥!

李白~ 发表于 2025-1-4 14:15:26

不是click触发事件,是mousedown触发事件
页: [1]
查看完整版本: .click()触发div元素失效