【问题标题】:Chrome extension loads only after refresh of the pageChrome 扩展仅在页面刷新后加载
【发布时间】:2021-04-02 16:12:35
【问题描述】:

我正在尝试创建一个 chrome 扩展,它从隐藏的输入元素中获取一个数字并注入一个显示该数字的 html 表。但是,扩展仅在我刷新页面后加载。我从中获取数据的网页是完全静态的,没有花哨的东西。只是一个基本的 HTML 页面。当我第一次访问该页面时,this 是我得到的错误。当我刷新它时,一切都会按应有的方式运行

清单文件如下所示。

{
    "name": "Extension name",
    "version": "1.0",
    "description": "Extension description",
    "content_scripts": [
        {
            "matches": ["*://*.example.com/something/*/something"],
            "js": ["/dostuff.js"]
        }
    ],
    "manifest_version": 3
}

这里是 dostuff.js

let hiddenElement = document.getElementById("someId").value;
let var1 = hiddenElement * 2;

let leftCol = document.getElementById("anotherId").parentElement;
let table = document.createElement("table");
table.innerHTML = "<tr><td>Number: </td><td>" + var1 + "</td></tr>"
leftCol.appendChild(table);

非常感谢任何帮助:)

【问题讨论】:

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


【解决方案1】:

run_at 属性添加到您的内容脚本,以确保它仅在页面加载后运行。

{
    "name": "Extension name",
    "version": "1.0",
    "description": "Extension description",
    "content_scripts": [
        {
            "matches": ["*://*.example.com/something/*/something"],
            "js": ["/dostuff.js"],
            "run_at": "document_end"
        }
    ],
    "manifest_version": 3
}

【讨论】:

  • 默认值是document_idle,它在document_end之后恰好出现一次,所以更改它不会有帮助。
  • 没有解决问题:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 2012-02-11
  • 2012-08-04
相关资源
最近更新 更多