【问题标题】:How To Scan a Page For Terms And Display Them - Javascript - Chrome Extension如何扫描页面中的术语并显示它们 - Javascript - Chrome 扩展
【发布时间】:2021-08-11 05:28:01
【问题描述】:

我目前正在尝试制作一个 google chrome 扩展程序,但遇到了障碍。

我希望扩展程序扫描页面中的 3 个术语并将它们显示在一个 div 中,但我对 JavaScript 了解不多,需要帮助。

【问题讨论】:

  • 您是否要扫描 HTML DOM 以查找 3 个特定术语?是这个意思吗?
  • 例如说我想扫描这篇文章的 cmets 并查看多少次:the,to 和 from 被输入并显示它们出现的时间量:the 2, to 4,并且从 0
  • 好吧,这是可能的,我知道怎么做,但是您可能需要 Chrome 扩展程序使用的一些特殊权限,所以不要忘记在 manifest.json 文件中添加权限范围.现在还假设您可以访问网站的 dom,我将发布有关如何搜索 parituclr 单词以及如何显示相同单词的答案。这样会好吗? @derpyranbowpop
  • 是的,那太好了

标签: javascript html css google-chrome google-chrome-extension


【解决方案1】:

const globalWordsStore = new Map();
const setOfWords = ['Hello', 'World']
function populateStore(el){
  let n;
  let a=[];
  let walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false);
  while(n=walk.nextNode()) {
    const arrayOfWords = n.data.trim().split(" ");
    arrayOfWords.forEach((ele) => {
      if(setOfWords.includes(ele)){
        if(globalWordsStore.has(ele)){
        globalWordsStore.set(ele, globalWordsStore.get(ele) + 1);
      } else {
        globalWordsStore.set(ele, 1);
      }
      }
    })
  }
}

populateStore(document.getElementsByTagName('body')[0]);

for (const [key, value] of globalWordsStore.entries()) {
  // key --> word
  // value --> count of that partivular word
  console.log(key, value);
}

这里的 Map 将存储所有单词及其计数。这里的方法是,首先从 DOM 中挑选出所有文本节点(它们是 body 元素的子元素),然后从中提取文本,接下来我使用整个文本中的单词创建一个数组,然后使用 @987654323 @ 到每个单词出现的存储,这是我为 DOM 中的所有文本节点所做的。

更多关于CreateTreeWalker

【讨论】:

  • 如果您还需要什么,请告诉我:),希望对您有所帮助!
  • 我应该把@Nikhil Singh这些词放在哪里
  • 在您的 chrome 扩展的 script 文件中
  • 或者如果你想测试,把它放在脚本标签内的任何 HTML 文件的底部,它会起作用
  • 我把代码放在我的扩展中,我认为它的工作原理。在开发控制台中,我可以看到代码的输出,但我如何找到我想要的。所以在代码中我该怎么做才能让它寻找一个固定的词
猜你喜欢
  • 2013-10-26
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多