Javascript 使用内容脚本更改innerText的Chrome扩展

Javascript 使用内容脚本更改innerText的Chrome扩展,javascript,html,google-chrome,google-chrome-extension,Javascript,Html,Google Chrome,Google Chrome Extension,我想使用Chrome扩展名和内容脚本更改页面上h2的文本。我已经设置了扩展名,并且为我的内容脚本加载了script.js文件 script.js document.getElementById('texttochange').innerText = "CHANGED !"; 然而,我总是得到错误: Uncaught TypeError: Cannot set property 'innerText' of null 是否需要为Chrome扩展做一些额外的工作,如果作为user.js用户脚本

我想使用Chrome扩展名和内容脚本更改页面上h2的文本。我已经设置了扩展名,并且为我的内容脚本加载了script.js文件

script.js

document.getElementById('texttochange').innerText = "CHANGED !";
然而,我总是得到错误:

Uncaught TypeError: Cannot set property 'innerText' of null
是否需要为Chrome扩展做一些额外的工作,如果作为user.js用户脚本加载并让Chrome安装它,这很好,这让我觉得这是一个小型问题,但我不知道我缺少什么

manifest.json
{
  "name": "Test",
  "version": "0.1",
  "description": "Test",
  "icons": { "16": "icon16.png",
             "48": "icon48.png",
             "128": "icon128.png" },
  "content_scripts": [
    {
      "matches": ["http://example.com"],
      "all_frames": true
    }
  ]
}
我无法添加注释,因为我的浏览器缓存已被清除

结构如下:

<frameset>
    <frame>
    ...
        <h2 id="texttochange">This should change</h2>
    ...
    </frame>
</frameset>
这是扩展的链接,非常简单,在本例中,它试图在使用框架集的网站omegle.com上更改一个h2,框架是从上面开始的。

试试这个-

document.body.innerHTML = document.body.innerHTML.replace(new RegExp("texttochange", "g"),"CHANGED !");
document.head.innerHTML = document.head.innerHTML.replace(new RegExp("texttochange", "g"),"CHANGED !");


这是我的舱单。我发布的代码位于background.html中,并在chrome.tabs.on上运行。为了防止脚本部分由于某种原因导致其无法工作,我对其进行了更新。

是否因为在加载DOM之前注入了脚本而出现此错误。因此,您试图更改的h2元素还不存在。只需将run_at:document_end添加到您的content_脚本部分,就可以了

manifest.json

script.js


不,那没用。如果我使用setInterval,我最终将使用它来做其他事情,页面只会继续重新加载。嗯,应该可以,它是直接从我的扩展中复制的。这是匹配的示例值吗?texttochange是h2元素的ID吗?两者都是,我不需要把真正的网站,因为这是一个非常普遍的问题,可以适用于任何网站。我已经合并了你的4!账户请使用真实的电子邮件地址注册您的帐户,以避免这些问题。我尝试过,也尝试过使用document\u idle。两者都不起作用,和以前一样。所以您使用了错误的id,或者它在iframe中。看一看。
{
"name": "My First Extension",
"version": "1.0",
"description": "The first extension that I made.",
"background_page": "background.html",
"browser_action": {
  "default_icon": "icon.png",
  "default_popup": "popup.html" 
},
"permissions": [
  "tabs", "http://*/" ]
}  
{
  "name": "Test",
  "version": "0.1",
  "description": "Test",
  "icons": { "16": "icon16.png",
             "48": "icon48.png",
             "128": "icon128.png" },
  "content_scripts": [
    {
      "matches": ["http://site.com"],
      "run_at": "document_end",
      "js": ["script.js"]
    }
  ]
}
document.getElementById('h2Id').innerText = "CHANGED !";