我正在为欧洲的cookie法(实际上只在欧洲的一些国家/地区)开发一个开源script。
我正在尝试添加一项功能,以检测当前正在浏览网站的用户是否来自欧洲,并且仅针对欧洲的用户显示该插件。
Freegeoip.net有一个REST服务,似乎很适合我的需求,但我发现有时它很慢(这可能取决于连接,但我不喜欢冒险)并且有每小时10.000个查询限制。由于我的插件是通过jsdelivr分发的,因此一些大型网站可能会达到这个限制。
所以,我的问题就出现了:如何判断AJAX请求是否花费的时间太长(让我们说超过3秒),并显示吧?
这是一个纯粹的javascript插件,这里是代码:
var cookieLawStates = [
'BE',
'BG',
...
];
var checkEurope = new XMLHttpRequest();
checkEurope.open('GET', 'https://freegeoip.net/json/', true);
checkEurope.onreadystatechange = function() {
if (checkEurope.readyState === 4 && checkEurope.status === 200) {
var country = JSON.parse(checkEurope.responseText).country_code;
if (cookieLawStates.indexOf(country) > -1) {
// some other logic before showing the bar
} else {
console.log('Not an EU user. cookieBAR is shut down.');
}
}
}
checkEurope.send();
编辑:感谢mplungjan指点我另一个答案,即使这里有点偏离主题,因为我使用普通的javascript而不是jquery ......但它引导我this answer,这正是我需要什么。