我想通过Google扩展程序获取特定网站中页面的类型。通过页面的类型,我的意思是新闻,讨论等。为此,我尝试使用$ .get,但它不能按照我想要的方式工作。我有以下代码:
setInterval(check, 5000); //// execute the function
var a = 1 /// number of the page (ex : https://example.com/1)
var b = "https://example.com/" + a
function check() {
$.get(b, function(data){
pg = $($.parseHTML(data.trim()))
var c = pg.find(".someclass")[0]
var d = pg.find(".anotherclass")[0]
/// one is always false (thats the difference between the pages). By knownig which is true and I know whats the type of the page.
console.log(a) // number of the page
console.log(b) // link of the page
console.log(c) // one type of page
console.log(d) // another type of page
if(c != undefined && d === undefined) { my code1; return a += 1;}
if(d != undefined && c === undefined) { my code2; return a += 1;}
/// if page does not exist it will do nothing until it get created.
})}
问题是,即使页面中的 c 和 d ,我总是得到相同的结果。
第一次尝试未定义 c ,而 d 是一个对象。但是在第二个中, c 是一个对象, d 是未定义的,但我仍然得到 c 为未定义和 d 作为一个对象。问题出在站点以外的地方,因为如果将 a 更改为2,我将得到 c 作为对象,而将 d 定义为未定义。
对不起,英语错误。谢谢。
答案 0 :(得分:1)
发现其他用户时,您的URL实际上没有更改,因为b
设置了一次。
如果将b
放在函数内,它将获得修改后的值a
。
使用setTimeout
而不是setInterval
来使您的$.get
请求在再次运行之前完成也可能很有用。
var a = 1
function check() {
var b = "https://example.com/" + a
$.get(b, function(data){
pg = $($.parseHTML(data.trim()))
var c = pg.find(".someclass")[0]
var d = pg.find(".anotherclass")[0]
if(c != undefined && d === undefined) { my code1; return a += 1;}
if(d != undefined && c === undefined) { my code2; return a += 1;}
setTimeout(check, 5000);
})
}
check()