请教一个简单的JavaScript问题,问半天ai就是搞定不了~

向大佬求助:我想通过js指令来按下这个页面中的发送按钮:

这样一来就可以把常用的prompt指令保存为小书签,只需要点击小书签,就能够输入预设的文本,并点击确认。

然而半天搞定不了这个发送!

ai给我的代码类似这样,但是不能用:

var element = document.querySelector('img.enter_icon.el-tooltip__trigger.el-tooltip__trigger');

// 确保该元素可交互
if (element) {
  element.style.pointerEvents = 'auto';  // 确保元素可以点击
  element.click();
} else {
  console.log("元素未找到");
}

我来回答一个,虽然不太符合你的要求,但是也能用
你用我这个油猴脚本,GoodNote - 网页笔记助手 把prompt都存在这里,然后每次手工复制就行
优点是不用开别的软件浏览器里就能解决了,还能随便修改,新增。

缺点就是,复制、贴进去 要手工。比较麻烦了。


关于你这个问题本身,定位最好不要你这种 img.enter_icon.el-tooltip__trigger.el-tooltip__trigger ,太通用了很难定位到。最好是用id。 实在没有也要找一些特征明显的class。

1 Like

试试看打开控制台,定位到发送按钮,右键复制 selector。
另外,搜索酱可以管理 prompt,例如这样

2 Likes

搞定了,感谢大佬

AI通过querySelector给了四种方案,有一个能用:

javascript:(function() {
    var element = document.querySelector('#search-input-box > div.input-wrap.flex.flex-x-between.flex-y-center > div.enter > img');
    
    if (element) {
        // 触发 mouse down 和 mouse up 事件
        var mouseDownEvent = new MouseEvent('mousedown', {
            bubbles: true,
            cancelable: true,
            view: window
        });
        var mouseUpEvent = new MouseEvent('mouseup', {
            bubbles: true,
            cancelable: true,
            view: window
        });

        // 模拟按下和松开鼠标
        element.dispatchEvent(mouseDownEvent);
        element.dispatchEvent(mouseUpEvent);
    } else {
        console.log("元素未找到");
    }
})();

1 Like

看了下,发送按钮的click事件应该是被屏蔽了,然后发现onmousedown和onmouseup两个事件是可用的,而且事件都被绑定到了按钮图片上了。那么做小书签写法如下:

javascript:(()=>{
    let el = document.querySelector(".input-wrap > .enter > .enter_icon");
    el.dispatchEvent(new MouseEvent("mousedown"));
    el.dispatchEvent(new MouseEvent("mouseup"));
})();

其实还可以更简洁,mouseup也可以不写:

javascript:(()=>{
    document.querySelector(".input-wrap > .enter > .enter_icon").dispatchEvent(new MouseEvent("mousedown"));
})();

上面选择器写的是“.input-wrap > .enter > .enter_icon”,经过测试其实直接写“.enter_icon”也是可以的。这样就可以更简洁了:

javascript:(()=>{
    document.querySelector(".enter_icon").dispatchEvent(new MouseEvent("mousedown"));
})();
3 Likes

我在想为什么要做成小书签,而不是变成油猴脚本,让网页上多几个按钮 自动输入prompt。
小书签的优点是什么、?

油猴脚本你得有油猴插件,他总是在背后运行。bookmarklet你不点它就不加载。还有一个问题,就是firefox下的油猴会丢脚本。我已经被坑两次了。自己写了十几个脚本没备份。。。一下子就没了

1 Like