当我作为扩展加载时,为什么我的JavaScript变量未定义?

时间:2019-05-14 02:27:51

标签: javascript json google-chrome-extension youtube

当我手动粘贴到浏览器的控制台中时,我的JavaScript代码可以正常工作。但是,每当我将代码作为扩展加载时,错误报告就会说我的“ ratingPair”变量未定义。如果我尝试先声明我的“ views”变量,那么它也将是未定义的。

我已经尝试了Firefox和Chrome浏览器,不同的计算机以及禁用其他扩展程序。

ratingRatio.js

let ratingPair = document.querySelectorAll("yt-formatted-string.ytd-toggle-button-renderer");

// total = likes + dislikes
let total = Number(ratingPair[0].ariaLabel.replace(/\D/g,'')) +
            Number(ratingPair[1].ariaLabel.replace(/\D/g,''));

let views = Number(document.querySelector(".view-count").innerHTML.replace(/\D/g,''));

if (total)
    document.querySelector(".view-count").innerHTML += " 1/" + Math.round(views/total);
else
    document.querySelector(".view-count").innerHTML += " NA";

manifest.json

{
  "description": "Displays the ratings/views ratio on Youtube; ratingRatio = (likes + dislikes)/views",
  "manifest_version": 2,
  "name": "ratingRatio",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["https://www.youtube.com/watch*"],
      "js": ["ratingRatio.js"]
    }
  ]
}

该比例应附加在视图旁边。例如,如果视频的观看次数为20,395次,喜欢次数为475次,喜欢次数为10次,那么我们可以通过以下方式计算比率:

(475 + 10)/ 20,395≈1/42

因此,在视频下方应显示“ 20,395次观看1/42”

0 个答案:

没有答案