在用户位置下雪时激活js

Activate js when snowing in users location

本文关键字:激活 js 下雪 用户 位置      更新时间:2023-09-26

所以我有一个js,我想只在用户区下雪时激活。

Here is a JSFiddle Here

<h1 onclick="snowStorm.toggleSnow();">
text
</h1>
<script src="https://web.archive.org/web/20161109225359/http://live.superedu.ml/snow.js"></script>
<script>
snowStorm.followMouse = false;
    snowStorm.freezeOnBlur = true;
    snowStorm.autoStart = false;
</script>

如果你点击测试,它会激活雪。当用户所在的地方下雪时,我该如何激活它呢?谢谢你

首先,您需要知道用户所在位置是否下雪。所以你要知道的第一件事就是他们在哪里。为此,您可以使用IP地理定位服务。谷歌它。其中之一是https://freegeoip.net/

接下来,您需要向天气服务询问天气情况。查看https://darksky.net/dev/docs/forecast

为了向像DarkSky API这样的服务请求一些东西,你需要告诉他们你对预测感兴趣的位置,这是你使用从上面的地理位置服务收到的位置坐标的地方。

你将收到一个响应"对象"从DarkSky API,其中将包含一堆信息,其中降水信息如下所述:

precipType 可选
在给定时间内发生的降水类型。如果定义了,该属性将具有以下值之一:"rain""snow""sleet"(分别指冻雨、冰球和“wintery mix”)。(如果precipIntensity为0,则不定义此属性。)
https://darksky.net/dev/docs/response

之后,您可以沿着

一行编写代码
if (data.precipType === 'snow') { // do something }

总的来说,它是这样的:

  1. 发送请求到GeoIP(哪里是ip 8.8.8.8 ?)
  2. 从GeoIP接收响应(它在晚:1.2345 lon:1.432)
  3. 发送请求到DarkSky(今天在lat:1.2345 lon:1.432是什么天气?)
  4. 接收来自DarkSky (snow!)的响应

如何

为了成功完成这个练习,您需要熟悉一点JS中的基本异步编程,以及如何发送AJAX请求,并使用您收到的响应。

简而言之,你需要学习如何编写能够在函数A完成后才启动函数B的代码(在未知的时间之后,比如通过网络请求时)

所以看起来更像这样:

1. Send request to GeoIP (where is ip 8.8.8.8 ?)
  2. Receive response from GeoIP (it's at lat:1.2345 lon:1.432)
    3. Send request to DarkSky (what's the weather today at lat:1.2345 lon:1.432 ?)
      4. Receive response from DarkSky (snow!)
        5. … do stuff …

可以搜索的关键字有jQuery AJAX,回调,以及更高级的Promises。但是从前两个开始。

祝你好运!