我试图构建一个Chrome扩展,获取当前域打开的年龄,在此年龄生成一个不透明度值,并将此不透明度值应用于要置于顶部的叠加层的当前页面。在Chrome扩展中使用ajax查询
这是我不工作的做法:
的manifest.json
{
"name": "overlay",
"version": "0",
"description": "art project",
"background": {"page": "background.html"},
"manifest_version": 2,
"browser_action": {
"name": "art project",
"icons": ["icon.png"],
"default_icon": "icon.png"
},
"content_scripts": [ {
"js": [ "jquery-2.1.4.min.js", "background.js"],
"css": ["customStyles.css"],
"matches": [ "http://*/*", "https://*/*"]
}]
}
background.js
var domain = location.hostname;
$.ajax({
url: 'http://whois.webhosting.info/' + domain,
type: 'GET',
success: function(res) {
// find table with class "body_text"
$(res.responseText).find('table.body_text').appendTo('body');
var creation_date = $(res.responseText).find('table.body_text > tbody > tr:nth-child(5) > td:nth-child(2)').html();
var str = creation_date.split(/(\s+)/);
// calculate the month number from month in string format
var monthcalc = ("JanFebMarAprMayJunJulAugSepOctNovDec".indexOf(str[0])/3 + 1);
// join the date
var domainage = str[2] + " " + monthcalc + " " + str[1];
// create the date
var firstdate = new Date(domainage);
var today = new Date();
var dayDiff = Math.ceil(today.getTime() - firstdate.getTime())/(1000 * 60 * 60 * 24 * 365);
var age = parseInt(dayDiff);
$('#age').html(age+' years old');
// calculate opacity of patina
patinaOpacity = (dayDiff * 1.5)/100;
console.log(patinaOpacity);
$("body").prepend('<div class="overlay">PATINA OVERLAY</div>');
$(".patina-overlay").css({
"z-index": "10000000000000",
"background": "black",
"opacity": patinaOpacity,
"position": "fixed",
"width": "100%",
"height": "100%",
"pointer-events": "none",
});
}
});
奇怪的是,此代码工作完全正常的HTML文档中 - 但不是当我将它实现为Chrome扩展时。 Chrome扩展开发工具总是向我展示,我在这一行有一个语法错误var str = creation_date.split(/(\s+)/;
,我不知道它有什么问题。
你确定它是一个_syntax_错误,或者它是一个运行时错误,沿着_cannot读取属性'split'undefined_?的行吗? – Xan
@Xan是啊,之前我也有错误'未捕获TypeError:无法读取属性'分裂'undefined' ... – Retador
你没有看到关于CORRS之前的消息吗? – Braiam