簡體   English   中英

如何更改js文件中的popup.html?

[英]How to change the popup.html from the js file?

我是新手,我正在嘗試制作一個 Chrome 擴展程序,通知用戶每隔一小時休息一次。 我制作了一個 SVG 加載程序,其中包含一些文本,顯示用戶下一次休息還剩多少時間,有一個 background.js 文件可以運行並更改彈出窗口。html 代碼,但錯誤即將到來:

Uncaught TypeError: Cannot read property 'textContent' of null

這是我的清單。json:-

  "manifest_version": 2,
  "name": "Detox",
  "version": "0.1",
  "background": {
    "scripts": ["index.js"]
  },
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "index.html",
    "default_title": "Detox your schedule"
  }
}

這是我的 background.js,錯誤出現在第三行:-

document.addEventListener("DOMContentLoaded", function () {
  var time = 3600;
  var showTime = document.querySelector("#timeFromBreak").textContent;

  setInterval(function () {
    if (time > 0) {
      let mins = Math.floor(time / 60);
      let sec = time % 60;
      showTime = mins + ":" + sec;
      time -= 1;
    } else {
      showTime = "BREAKTIME!!!";
    }
  }, 1000);
});

這是彈出窗口。html:-

<!DOCTYPE html>
<html>
  <head>
    <title>extension</title>
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="./style.css" />
  </head>
  <body>
    <header>
      <h1>Your Detox Report</h1>
    </header>
    <main>
      <section class="titlePage">
        <div class="nbi">Next Break In</div>
        <svg height="100" width="100" style="transform: rotate(270deg);">
          <circle cx="50" cy="50" r="40" />
          <text
            id="timeFromBreak"
            text-anchor="middle"
            x="50"
            y="-50"
            fill="#2bae66ff"
            transform="rotate(90)"
          >
            1:00
          </text>
        </svg>
      </section>
    </main>
    <script src="./background.js"></script>
  </body>
</html>

我猜你在 chrome://extensions 頁面中看到了錯誤,在這種情況下它來自你不需要的 index.js。

  1. 從 manifest.json 中刪除background部分

  2. 將 DOM 元素存儲在showTime中,然后分配其 textContent 屬性。 當前您更改文本本身,這只是一個不再連接到元素的純字符串

     var showTime = document.querySelector("#timeFromBreak"); setInterval(function () { if (time > 0) { let mins = Math.floor(time / 60); let sec = time % 60; showTime.textContent = mins + ":" + sec; time -= 1; } else { showTime.textContent = "BREAKTIME;,;"; } }, 1000);
  3. 將 background.js 重命名為 popup.js(也在 popup.html 的標簽內)

請注意,彈出窗口是一個標准頁面,顯示在它自己單獨的 window 中,因此它有自己單獨的開發工具,您可以通過在彈出窗口內右鍵單擊來調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM