Closed ZhenhongDu closed 1 month ago
class LobeHubChatAsk extends NoiAskCustom {
static name = 'LobeHubChat';
static url = 'https://chat-preview.lobehub.com';
// 模拟用户输入
static sync(message) {
const inputElement = document.querySelector('textarea.ant-input[placeholder="输入聊天内容..."]');
if (inputElement) {
// 使用 setRangeText 模拟用户输入
inputElement.focus();
inputElement.setRangeText(message, 0, inputElement.value.length, "end");
// 触发输入事件
inputElement.dispatchEvent(new Event('input', { bubbles: true }));
inputElement.dispatchEvent(new Event('change', { bubbles: true }));
console.log('Message has been set to the input element:', message);
} else {
console.error('Input element not found');
}
}
// 模拟按下 Enter 键
static submit() {
const inputElement = document.querySelector('textarea.ant-input[placeholder="输入聊天内容..."]');
if (inputElement) {
// 模拟按下 "Enter" 键
const enterKeyEvent = new KeyboardEvent('keydown', {
bubbles: true,
cancelable: true,
key: 'Enter',
code: 'Enter',
keyCode: 13, // Enter 键的键码是 13
});
inputElement.dispatchEvent(enterKeyEvent);
console.log('Enter key pressed.');
} else {
console.error('Input element not found');
}
}
}
// Register your AI Chat class within the NoiAsk global namespace for accessibility.
window.NoiAsk = {
...window.NoiAsk || {},
// TODO: Add your AI Chat class here
LobeHubChatAsk,
};
和 noi-ask/main.js
同级的还有个 manifest.json
文件,它是用来配置插件加载规则的,你需要在 content_scripts.matches
中添加一下 url 匹配规则(noi-ask-custom
类似)。
@lencx ,大佬已经按照您说的设置了manifest.json文件。麻烦您看一下。设置了.json不需要在console里重新粘贴所有的js代码了,运行以上代码能实现功能。 但不知道为什么,在noi的对话框中,并不能实现同步
{
"manifest_version": 3,
"name": "@noi/ask-custom",
"version": "0.1.0",
"homepage": "https://github.com/lencx/Noi/tree/main/extensions/noi-ask-custom",
"description": "The best assistant for batch asking and quick typing of prompts.",
"content_scripts": [
{
"matches": [
"https://app.nextchat.dev/*",
"https://demo.fuclaude.com/*",
"https://metaso.cn/*",
"https://chat-preview.lobehub.com/*"
],
"js": ["main.js"],
"run_at": "document_end",
"world": "MAIN"
}
]
}
你把这段代码换成 document.querySelector('textarea.ant-input')
,我不太确定是不是你的选择器没找到元素。我这边用你发的方法是可以的。
// const inputElement = document.querySelector('textarea.ant-input[placeholder="输入聊天内容..."]');
const inputElement = document.querySelector('textarea.ant-input');
另外,你可以自己调试一下代码,在 Noi 里打开控制台,输入的时候,看有没有报错信息(sync 方法会在输入时持续触发)。
谢谢大佬,排查过元素选择器的错误。也修改了,但似乎还是没有起作用
在 Noi 里打开控制台,输入的时候,console完全没有响应
在我的自定义的别的网站好像完全没有这个问题,主要是大佬你的电脑可以运行就很邪门了,不过我的是windows系统的
在sync方法开始加了一个log,输入的时候没有被执行 侧栏设置的是: https://chat-preview.lobehub.com
json文件里
大佬我刚才在打开NOI后,用noi ask仍然不行;但是我打开元素检查之后,先在lobechat里面输入,然后console里开始弹出log的信息,再到noi ask里输入突然就可以了;我也不知道为什么
总之非常感谢大佬的帮助了
您好,
我在测试定制的noiask的脚本时,发现有的脚本没有成功加载到全局作用域。这种情况有解决思路吗;
代码应该是可以正常工作的,当我右击选择检查元素后,将所有的代码粘贴到console后,便可以在noi的输入框中实现输入和网页同步。再次刷新后,再次无法在noi中实现同步输入。
右击检查元素后,在console中输入了以下代码,得到了以下结果: