gpt4 book ai didi

javascript - 在chrome扩展中使用ajax查询

转载 作者:行者123 更新时间:2023-12-03 10:06:30 24 4
gpt4 key购买 nike

我正在尝试构建一个 chrome 扩展,它获取当前打开域的年龄,根据该年龄生成不透明度值,并将该不透明度值应用于我想要放置在当前页面顶部的覆盖层。

这是我不起作用的方法:

list .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://*/*"]
}]
}

背景.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+)/; 中存在语法错误,但我不知道它出了什么问题.

最佳答案

虽然很难准确说出代码失败的原因,但必须说查询 Web WHOIS 服务永远不会有好结果。

此类服务几乎总是针对重复查询提供保护:您可能会遇到验证码或类似的防御。没有无限的免费 WHOIS 服务/API 是有原因的。

那么您的代码将无法找到所需的元素,并且由于您没有检查该元素 - 会在更远的地方崩溃。

<小时/>

即使抛开这一点,跨源 AJAX 也要求您在 list 的权限字段中声明您正在查询的地址。尽管我认为在这种情况下它不会调用 success 函数。

<小时/>

另一种可能性是非常可疑操作$(res.responseText)来尝试解析HTML。您正在将外部代码(可能包含脚本)注入(inject)到当前文档的上下文中。对于您无法控制的数据来说,这不是一个好主意。

关于javascript - 在chrome扩展中使用ajax查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com