我正在尝试制作Chrome插件,进行一些网页抓取并显示信息。我对编程很陌生,我通常会用函数做所有事情,这是我第一次尝试使用类。我有这个代码可以工作,我只是想知道我是否确实实现了它。
新闻和交易方法正在做与引用方法相同的事情,但不同的来源,所以我把它切掉,所以不会那么多的代码。
我可以对此代码有什么改进?
在代码中我使用Plugin.random
看起来很奇怪,它是如何使用的?我尝试this.random
并抛出错误。
class Plugin {
static random(min, max) {
return Math.random() * (max - min) + min;
}
get deals(){
return this.getDeals();
}
get news(){
return this.getNews();
}
get quote(){
return this.getQuote();
}
getDeals() {
request.open('GET', url, true);
request.send();
}
getNews() {
request.open('GET', url, true);
request.send();
}
getQuote() {
for(let i = 10; i > 0; i--) {
let page = Math.round(Plugin.random(1, 22));
if (page !== 17) {
var url = 'https://www.somesite.com?page=' + page;
break;
}
}
let request = new XMLHttpRequest();
request.onload = function(event) {
let parser = new DOMParser();
let xmlDoc = parser.parseFromString(request.response,"text/html");
for(let i = 25; i > 0; i--) {
let nr = Math.round(Plugin.random(1, 24));
if(xmlDoc.getElementsByClassName("quoteText")[nr].innerHTML.length < 600) {
var quote = xmlDoc.getElementsByClassName("quoteText")[nr].innerHTML.split('"')[0].split('<br>')[0];
let title = xmlDoc.getElementsByClassName("quoteText")[nr].getElementsByClassName("authorOrTitle")[0].innerHTML;
break;
}
}
document.getElementById('beforeand').insertAdjacentHTML('beforeend',quote.substr(8).slice(0, -4) + '<br><p class="author">' + title + '</p>');
};
request.open('GET', url, true);
request.send();
}
}
const test = new Plugin();
test.quote;
test.news;
test.deals;