当人们在状态创建框中引用朋友时在 Facebook 上创建的那些标记被非正式地称为提及或标签。
看起来你正在寻找一个现有的、强大的解决方案来创建这些东西;如果是这种情况,请查看Mentionator,它是由您真正维护的。
另一方面,如果您对如何制作这样的实用程序感兴趣,请继续阅读。
“提及”管理实用程序具有 3 个组件:
自动完成模块:负责获取和显示可用于创建提及的项目集的组件,给定一个字符串。
提及跟踪模块:负责跟踪提及相关数据的组件;至少应在对附加实用程序的输入元素文本的所有修改过程中跟踪每个提及的位置以及表面和实质(如果存在)值。
提及视觉区分模块:负责将提及文本与附加实用程序的输入元素中的其余文本区分开来的组件*
如果您有兴趣了解这些模块中的每一个在代码方面的外观,您可以查看 Mentionator 的源代码,该代码结构良好、易于理解且注释丰富!**
*重要的是要注意,Facebook 对此类设施的实施不会在创建状态时将提及转化为链接,正如我推断您所暗示的那样。相反,状态文本被发送到 Facebook 的服务器,其中包含(可能是内联的)数据,这些数据指定状态中每个提及的位置。当状态要从服务器传递给用户时,上述位置数据用于创建带有“链接”提及文本的文本版本。
** Mentionator 的自动完成模块是 jQuery UI Autocomplete 小部件,其来源不包含在 Mentionator 中。