【问题标题】:Chrome Extension Manifest V3 chrome.scripting.executeScript only works first timeChrome 扩展清单 V3 chrome.scripting.executeScript 仅在第一次工作
【发布时间】:2022-07-26 03:11:43
【问题描述】:

我正在编写一个 Chrome 扩展程序,它从网页中获取数据并将其显示在新标签中。第一次单击图标按钮时效果很好,但第二次单击图标时,它会创建新选项卡,但不会刷新数据。如果我重新加载扩展程序,它会第一次再次工作。

manifest.json

{
    "name": "Log Missing Copy",
    "version": "3.7",
    "manifest_version": 3,
    "action": {},
    "permissions": ["activeTab", "scripting", "tabs", "storage"],
    "background": {
      "service_worker": "background.js"
    }
  }

content.js

console.log('here');

let oTable = document.getElementsByClassName('grid-table')[1].children[2]
let data = [...oTable.rows].map(t => [...t.children].map(u => u.innerText))
chrome.storage.local.set({"targetList": data});

background.js

chrome.action.onClicked.addListener((tab) => {

    chrome.scripting.executeScript({
        target: {tabId: tab.id},
        files: ['content.js']
      });

    chrome.tabs.create({'url':'copy.html'});
    
  });

【问题讨论】:

标签: google-chrome-extension


【解决方案1】:

我想通了。它每次都调用它,但它失败了,因为它说 content.js 正在重新初始化一个变量。我将其更改为 var 并开始工作。

【讨论】:

    【解决方案2】:

    你也可以像这样包裹在iife中

    (函数(){ ...编写你的代码 })()

    您也可以将此方法用于异步任务,例如。

    (异步函数(){

    等待一些数据

    })()

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 1970-01-01
      • 2021-03-26
      • 2021-09-21
      • 2022-11-15
      • 2021-09-20
      • 2021-09-30
      • 2021-07-30
      • 2021-06-12
      相关资源
      最近更新 更多