微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浏览器扩展开发问题:访问网站的功能?

如何解决浏览器扩展开发问题:访问网站的功能?

我正在制作一个 Firefox 扩展,它在特定网站的顶部显示一个秒表。我还有一个按钮可以将秒表重置为 00:00:00。 我希望扩展程序在调用该网站中的任何函数自动重置计时器。

例如,如果一个网站有一个按钮可以改变网站的背景颜色,那么每次点击该按钮时,计时器都应该重置。

如何在我的扩展中访问各个网站的功能?我还必须更改 manifest.json 文件(权限和内容)吗?一旦我访问了它们,我该如何为它们中的每一个制作一个事件监听器?

这是我的 manifest.json 文件

{
  "name": "timer","version": "1.0","permissions": [
    "activeTab"
  ],"content_scripts": [
    {
      "matches": ["<all_urls>"],"js": ["content-script.js"],"css":["style.css"]
    }
  ],"manifest_version": 2
}

我的 JavaScript

var tim = document.createElement('time');
var button = document.createElement("button");
button.innerHTML = "RESET";

tim.innerText = "00:00:00"

document.body.insertAdjacentElement('beforebegin',tim);
document.body.insertAdjacentElement('beforebegin',button);

button.addEventListener ("click",function() {
tim.textContent = "00:00:00";
    seconds = 0; minutes = 0; hours = 0;
});
//when anything in body changes
let Par = document.body,options = {
    attributes: true
  },observer = new MutationObserver(restart);

  
var h1 = document.getElementsByTagName('time')[0],seconds = 0,minutes = 0,hours = 0,t;
    
    
    

function add() {
    seconds++;
    if (seconds >= 60) {
        seconds = 0;
        minutes++;
        if (minutes >= 60) {
            minutes = 0;
            hours++;
        }
    }

    tim.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds);

    timer();
}
function timer() {
    t = setTimeout(add,1000);
}
timer();

//restart method that resets timer
function restart() {
tim.textContent = "00:00:00";
    seconds = 0; minutes = 0; hours = 0;
}

  observer.observe(Par,options);

谢谢!

编辑:按照@wOxxOm 的建议,我尝试使用 MutationObserver 跟踪身体的任何变化。我这样做的方式一定是错误的,因为它无法正常工作。重申一下,我想要的是当身体发生任何变化时,计时器会重置。 知道为什么我这样做的方式是错误的吗? 我对 javascript 很陌生,之前没有使用过 MutationObserver 所以我真的不知道

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。