Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript在HTML页面中查找关键字的快速算法_Javascript_Jquery_Search_Dictionary - Fatal编程技术网

使用Javascript在HTML页面中查找关键字的快速算法

使用Javascript在HTML页面中查找关键字的快速算法,javascript,jquery,search,dictionary,Javascript,Jquery,Search,Dictionary,我有一个JS专业词典,可以在页面上找到某些关键词,并为它们添加解释性的工具提示。现在我正在使用正则表达式查找关键字,但我怀疑当我的字典变得更大时,它很快就会变慢。我将字典条目存储在一个数组中,因此我认为这也可以改进。我的网站语言是越南语,我的关键字都是英语 任何关于改进性能的想法都将不胜感激。谢谢。您可以处理字典服务器端(根据关键字检查输出),然后为每个匹配项添加一个处理程序(一个类或其他html元素来标识要使用的定义…)。然后使用javascript将每个元素绑定到字典。这样,您的服务器就完成

我有一个JS专业词典,可以在页面上找到某些关键词,并为它们添加解释性的工具提示。现在我正在使用正则表达式查找关键字,但我怀疑当我的字典变得更大时,它很快就会变慢。我将字典条目存储在一个数组中,因此我认为这也可以改进。我的网站语言是越南语,我的关键字都是英语


任何关于改进性能的想法都将不胜感激。谢谢。

您可以处理字典服务器端(根据关键字检查输出),然后为每个匹配项添加一个处理程序(一个类或其他html元素来标识要使用的定义…)。然后使用javascript将每个元素绑定到字典。这样,您的服务器就完成了繁重的工作

1) 服务器加载您的字典文件,并与您将要输出的文本进行比较

2) 找到匹配项的位置添加

<span class="definition">yourword</span>

您可以处理字典服务器端(根据关键字检查输出),然后向每个匹配项添加一个处理程序(一个类或其他html元素来标识要使用的定义)。然后使用javascript将每个元素绑定到字典。这样,您的服务器就完成了繁重的工作

1) 服务器加载您的字典文件,并与您将要输出的文本进行比较

2) 找到匹配项的位置添加

<span class="definition">yourword</span>

请参见我对相关问题的回答:

还可以看到这个问题的公认答案,这是一个jQuery插件,可以实现您想要的功能

使用regexp执行此操作的问题不是速度,因为有些人声称DOM解析方法实际上可能较慢。问题是要避免像这样疯狂的死角:你不想替换恰好包含关键字的javascript字符串,你不想替换恰好包含关键字的css类名或id,等等


根据我的经验,DOM方法足够快。事实上,我的网站上有100多个关键字的列表,它在不到半秒钟的时间内成功地在所有关键字上安装了工具提示(当然比我的眼睛所能看到的要快)。

查看我对相关问题的回答:

还可以看到这个问题的公认答案,这是一个jQuery插件,可以实现您想要的功能

使用regexp执行此操作的问题不是速度,因为有些人声称DOM解析方法实际上可能较慢。问题是要避免像这样疯狂的死角:你不想替换恰好包含关键字的javascript字符串,你不想替换恰好包含关键字的css类名或id,等等


根据我的经验,DOM方法足够快。事实上,我的网站有一个100多个关键词的列表,它在不到半秒钟的时间内成功地在所有关键词上安装了工具提示(当然比我的眼睛所能看到的要快)。

你的眼睛可以分辨大约40毫秒。:)我明白你的意思了。实际上,我所做的是去特定的节点和正则表达式,我不正则表达式整个身体的节点。。。您关于避免使用某些节点的建议非常有用,谢谢。不过,我希望我的字典很快就能收录一千个单词。javascript会挂起浏览器还是在后台缓慢运行。我真的不需要立即处理关键词,我只是不希望它减慢页面加载。你的眼睛可以分辨~40ms.:)我明白你的意思了。实际上,我所做的是去特定的节点和正则表达式,我不正则表达式整个身体的节点。。。您关于避免使用某些节点的建议非常有用,谢谢。不过,我希望我的字典很快就能收录一千个单词。javascript会挂起浏览器还是在后台缓慢运行。我真的不需要立即处理的关键字,我只是不想它减缓页面加载。谢谢你的详细回答。我曾考虑将操作移到服务器端,但我的服务器速度不是很快,我希望能够在其他一些我无法访问源代码的网站上使用此词典。好的-但不管你的服务器有多慢,它都会比你的用户浏览器快。然而,我不知道你的流量水平,这将是交易的破坏者-如果你有高流量和一个缓慢的服务器,那么不做这个处理服务器端可能是最好的做法。也取决于你的页面大小:-)谢谢你的详细回答。我曾考虑将操作移到服务器端,但我的服务器速度不是很快,我希望能够在其他一些我无法访问源代码的网站上使用此词典。好的-但不管你的服务器有多慢,它都会比你的用户浏览器快。然而,我不知道你的流量水平,这将是交易的破坏者-如果你有高流量和一个缓慢的服务器,那么不做这个处理服务器端可能是最好的做法。还取决于页面的大小:-)