首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在浏览器扩展加载页面之前执行js文件?

如何在浏览器扩展加载页面之前执行js文件?
EN

Stack Overflow用户
提问于 2020-06-21 06:31:11
回答 1查看 40关注 0票数 0

这是我的配置:

代码语言:javascript
运行
复制
  "content_scripts": [
    {
      "matches": ["https://www.baidu.com/"],
      "js": ["./baidu/baidu.js"]
    }
  ]

这是我的baidu.js

代码语言:javascript
运行
复制
  // #region delete useless DOM
  const deleteIdList = [
    '#s_top_wrap',
    '#bottom_layer',
    '#lm-new',
    '#s-top-left',
    '#u1',
    '#s-hotsearch-wrapper',
    '#s_side_wrapper'
  ];
  deleteIdList.forEach(v => {
    const element = document.querySelector(v);
    element.style.display = 'none';
    // element.parentNode.removeChild(element);
  });

我想要的只是非常简单,我只是希望当我访问baidu.com时,无用的域可以被删除(或者隐藏)。我的问题是,当我的配置工作,但无用的多姆会闪现在开始。然后那些就消失了。我希望当我看到网络,一切都好。

我尝试将属性run_at指定为document_start。那么我的js文件就不能工作了。

我怎么能做到呢?(在FireFox浏览器中测试)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-21 06:57:26

在内容脚本声明中的"run_at": "document_start"是绝对必须的。

当页面为空时,内容脚本将运行,因此我们还需要以下内容之一:

  • 通过在documentexample上使用MutationObserver来观察正在构建的页面,检查添加的节点并隐藏与ids.

列表匹配的节点。

  • 或构造带有要隐藏的选择器的style元素。

性能方面,它的数量级更快。也更简单。

hideSelectors(‘s_top_side’,#s_top_layer‘,#lm’,#s-左上角‘,'#u1',’#s-热搜索-包装‘,'#s_side_wrapper',’#s_side_wrapper‘,);函数hideSelectors(sels) { const el = document.createElement('style ');el.textContent = sels.join(',’)+{ display: none!//此时不存在,因此尽管违反了document.documentElement.appendChild(el);},但在DOM中仍然允许添加//

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62495205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档