Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在后台自动运行chrome扩展?_Javascript_Google Chrome Extension - Fatal编程技术网

Javascript 如何在后台自动运行chrome扩展?

Javascript 如何在后台自动运行chrome扩展?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我想创建一个chrome扩展。 我有一个popup.html和一个background.js文件。 我想创建一个倒计时计时器,也希望它自动运行。 但是background.js文件无法访问popup.html。 如何在后台运行脚本并自动更改DOM popup.html: <span class="time">20:00</span> <script src="background.js"></script> 20:00 background.j

我想创建一个chrome扩展。 我有一个popup.html和一个background.js文件。 我想创建一个倒计时计时器,也希望它自动运行。 但是background.js文件无法访问popup.html。 如何在后台运行脚本并自动更改DOM

popup.html:

<span class="time">20:00</span>
<script src="background.js"></script>
20:00
background.js:

startTimer = (duration, display) => {
  let time = duration, minutes, seconds;


setInterval(() => {
  minutes = parseInt(time / 60, 10);
  seconds = parseInt(time % 60, 10);

  minutes = minutes < 10 ? "0" + minutes : minutes;
  seconds = seconds < 10 ? "0" + seconds : seconds;

  display.innerHTML = `${minutes}:${seconds}`;
  if (--time < 0) {
    time = duration;
  }
 }, 1000);
}

window.onload = () => {
  let duration = 60 * .1, display = document.querySelector('.time');  
  startTimer(duration, display);
}
startTimer=(持续时间,显示)=>{
让时间=持续时间,分钟,秒;
设置间隔(()=>{
分钟=parseInt(时间/60,10);
秒=parseInt(时间%60,10);
分钟=分钟<10?“0”+分钟:分钟;
秒=秒<10?“0”+秒:秒;
display.innerHTML=`${minutes}:${seconds}`;
如果(--时间<0){
时间=持续时间;
}
}, 1000);
}
window.onload=()=>{
让duration=60*.1,display=document.querySelector(“.time”);
起始计时器(持续时间、显示);
}

当前,您的脚本只是在弹出页面中运行的普通脚本。
仅仅因为它名为background.js,它就不会神奇地变成背景脚本

必须在manifest.json中声明实数:

"background": {
  "scripts": ["background.js"],
  "persistent": false
}
它将创建一个单独的隐藏背景页面(或使用
时的事件页面“persistent”:false
),该背景脚本将在其中运行,并将直接访问该背景页面的DOM(而不是弹出窗口)。要检查/调试后台脚本,请单击上的后台页面chrome://extensions 处于开发人员模式时的页面:

另一个问题是,弹出窗口仅在显示时存在,因此您必须找到另一种显示计时器的方式。例如,一个单独的小窗口(通过chrome.windows.create打开)或扩展图标上的一个小文本标记(通过chrome.browserAction.setBadgeText设置),您可以通过谷歌搜索找到其示例