带有Trix编辑器的At.js是一个用于实现@提及功能的JavaScript库。它可以在文本编辑器中实现类似社交媒体平台中的@功能,允许用户在输入框中提及其他用户或特定对象。
错误“给定的范围不在文档中”通常是由于在使用Trix编辑器时,传递给At.js的范围参数超出了文档的范围导致的。范围参数用于指定At.js应该在哪个范围内进行@提及的搜索和匹配。
要解决这个错误,可以检查传递给At.js的范围参数是否正确,并确保它在文档的有效范围内。可以使用Trix编辑器提供的API来获取当前文档的范围,并将其传递给At.js。
以下是一个示例代码片段,展示了如何使用Trix编辑器和At.js来实现@提及功能:
// 创建Trix编辑器实例
var editor = new Trix.Editor(document.getElementById('editor'));
// 创建At.js实例
var at = new AtJS({
at: '@',
data: ['user1', 'user2', 'user3'], // 用户数据,可以从后端获取
displayTpl: '<li>${name}</li>', // 显示模板
insertTpl: '@${name}', // 插入模板
limit: 5, // 最多显示的匹配项数量
startWithSpace: true // 是否需要在@之前输入空格才触发匹配
});
// 监听Trix编辑器的input事件,在输入时触发@提及匹配
editor.addEventListener('input', function() {
var range = editor.getSelectedRange(); // 获取当前文档的范围
var text = editor.getDocument().toString(); // 获取当前文档的文本内容
var keyword = at.getKeyword(text, range[0]); // 获取@关键字
if (keyword) {
var matches = at.match(keyword); // 匹配@关键字
var suggestions = matches.map(function(match) {
return { name: match };
});
at.showSuggestions(suggestions); // 显示匹配项
} else {
at.hideSuggestions(); // 隐藏匹配项
}
});
// 监听At.js的select事件,在选择匹配项时插入@提及
at.on('select', function(item) {
var mention = at.insert(item); // 插入@提及
editor.insertHTML(mention); // 在Trix编辑器中插入@提及
});
在上述示例中,我们创建了一个Trix编辑器实例和一个At.js实例。通过监听Trix编辑器的input事件,我们可以在用户输入时触发@提及的匹配。当用户输入@关键字时,At.js会根据提供的用户数据进行匹配,并显示匹配项。用户可以通过键盘选择匹配项,并将其插入到Trix编辑器中。
请注意,上述示例中的代码仅用于演示目的,实际使用时需要根据具体需求进行适当的修改和调整。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)、腾讯云数据库(TencentDB)等。你可以在腾讯云官网上找到这些产品的详细介绍和文档。
腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
领取专属 10元无门槛券
手把手带您无忧上云