Javascript 如何在后台自动运行chrome扩展?
我想创建一个chrome扩展。 我有一个popup.html和一个background.js文件。 我想创建一个倒计时计时器,也希望它自动运行。 但是background.js文件无法访问popup.html。 如何在后台运行脚本并自动更改DOM popup.html: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
<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设置),您可以通过谷歌搜索找到其示例