从这段代码的JavaScript不像预期的那样工作,当我把它变成一个Chrome扩展

The JavaScript from this code is not working as expected when I made it into a Chrome Extension

本文关键字:一个 扩展 Chrome 代码 JavaScript 段代码 工作      更新时间:2023-09-26

这是代码:

HTML:

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
    <title>New Tab</title>
  </head>
  <body id="body" onload="showDate()">
    <div id="timeDiv"> &nbsp; &nbsp; &nbsp; </div>
    <div id="secondsDiv"> &nbsp; &nbsp; </div>
    <div id="quoteDiv" onload="randomQuote()"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
    <a href="intro.html">
      <div class="element"></div>
      <p class="logo">a</p>
    </a>
    <p class="credits">Made by Jaiveer Chadda &nbsp; &nbsp; </p>
    <script type="text/javascript" src="script.js"></script>
  </body>

</html>
Javascript:

/////////////////////////////////////////////// Q U O T E ///////////////////////////////////////////////


window.onload = function() {
          var randNumForQuote = Math.floor((Math.random() * 11));
          if (randNumForQuote == 0) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Life is like riding a bicycle.<br>To keep your balance, you must keep moving.<span>&rdquo;</span><br> - Albert Einstein';
          } else if (randNumForQuote == 1) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>You only live once, but if you do it right, once is enough.<span>&rdquo;</span><br> - Mae West';
          } else if (randNumForQuote == 2) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Everyone is a genius, but if you judge a fish by it''s<br> ability to climb a tree, it will live it''s whole life<br> believing that it is stupid.<span>&rdquo;</span><br> - Albert Einstein';
          } else if (randNumForQuote == 3) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Be the change you want to see in the world.<span>&rdquo;</span><br> - Mahatma Gandhi';
          } else if (randNumForQuote == 4) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>To live is the rarest thing in the world.<br> Most people exist, that is all.<span>&rdquo;</span><br> - Oscar Wilde';
          } else if (randNumForQuote == 5) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>No one ever drowned in sweat<span>&rdquo;</span><br> - British Naval Saying';
          } else if (randNumForQuote == 6) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Simplicity is the ultimate sophistication<span>&rdquo;</span><br> - Leonardo Da Vinci';
          } else if (randNumForQuote == 7) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Fall seven times, stand up eight.<span>&rdquo;</span><br> - Japanese proverb';
          } else if (randNumForQuote == 8) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>He who learns but does not think is lost! <br>He who thinks but does not learn is in great danger.<span>&rdquo;</span><br> - Confucius';
          } else if (randNumForQuote == 9) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>I cried because I had no shoes, Till I saw a man <br>with no feet. Life is full of blessings,<br>Sometimes we are just too blind to see them...<span>&rdquo;</span><br> - Unknown';
          } else if (randNumForQuote == 10) {
            document.getElementById("quoteDiv").innerHTML = '<span>&ldquo; </span>Live as if you were to die tomorrow.<br>Learn as if you were to live forever<span>&rdquo;</span><br> - Mahatma Gandhi';
          }
        }


//////////////////////////////////////////////// T I M E ////////////////////////////////////////////////


function showDate() {
        var now = new Date();
        var date = ((now.getDate() < 10) ? "0" : "") + now.getDate();
      function fourdigits(number) {
          return (number < 1000) ? number + 1900 : number;
        }
        tnow = new Date();
        thour = now.getHours();
        tmin = now.getMinutes();
        tsec = now.getSeconds();
        if (tmin <= 9) { tmin = "0" + tmin; }
        if (thour < 10) { thour = "0" + thour; }
        if (thour > 12) {
          thour = thour - 12;
        }
        if (thour < 10){
          thour = "0"  + thour ;
        } else {
          thour = ""  + thour ;
        }
        if (tsec % 2 == 1){
          today = thour + " &nbsp "  + tmin;
        } else {
          today = thour + " : "  + tmin;
        }
        if (tsec < 10){
          now = "0"  + tsec ;
        } else {
          now = ""  + tsec ;
        }

        document.getElementById("timeDiv").innerHTML = today;
        document.getElementById("secondsDiv").innerHTML = now;

      }
      setInterval("showDate()", 1000);

当我将这段代码作为本地文件运行时,它的所有工作都像它应该的那样。时间和报价都在工作,时间每秒钟都在刷新。

但是当我使它成为一个本地chrome扩展,只有报价是工作的。

请帮助。

您违反了对扩展强制执行的几项内容安全策略。

通读文档。

  • 不能使用内联代码:禁止在HTML中设置onload="..."。如果您确实需要绑定到load事件(在这种情况下这是非常值得怀疑的),请使用addEventListener。考虑切换到DOMContentLoaded事件。

  • 你的setInterval("showDate()", 1000);调用是一个隐式的eval:你强迫JavaScript引擎解析字符串来执行,而不是使用一个函数的引用,完全没有必要。这个很容易修复:setInterval(showDate, 1000);