chrome扩展程序开发 content.js获取页面dom内容报错 chrome插件

发布于 2022-09-12 03:43:15 字数 1161 浏览 42 评论 0

本人最近开发chrome扩展程序,目的是爬取页面数据,使用js获取dom内文本内容。比如通过document.getElementsByClassName('data')[0].innerHTML来获取相对应className标签的内容。

需求:取得页面上所有classname为data的标签内容

问题:
当只取一个值的时候是成功的,如:document.getElementsByClassName('data')[0].innerHTML,
当我想循环取值的时候就会报错,如图:
image.png

贴一下我的代码
popup.js
点击事件

fetchData() {
      console.log('fetch')
      chrome.tabs.query({ currentWindow: true, active: true }, function (tabs) {
        let message = {
          info: 'hello'
        }
        chrome.tabs.sendMessage(tabs[0].id, message, res => {
          console.log('bg=>content')
          console.log(res)
        })
      });
    },

content.js

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    function (request, sender, sendResponse) {
        var _dom = document.getElementsByClassName('data')
        var _data = [];
        for (var i = 0; i < _dom.length; i++) {
            _data.push(_dom[i].innerHTML)
        }
        sendResponse(_dom)
   }
});

感恩~~~~!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬シ愛 2022-09-19 03:43:15

获取多个class dom,需要一个一个使用document.getElementsByClassName('data')[i]来获取并操作,否则都是空

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文