0

我正在为我们在欧洲拥有的 cookie 法开发一个开源脚本(实际上,仅在欧洲的某些国家/地区)。

我正在尝试添加一个功能,用于检测当前正在浏览网站的用户是否来自欧洲,并仅为欧洲的用户显示该插件。

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 ......但它让我得到了这个答案,这正是我所需要的。

4

0 回答 0