因此,我有一个仅在用户区域下雪时才要激活的js。
这是一个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
为零,则不会定义此属性。)
https://darksky.net/dev/docs/response
之后,您可以按照
if (data.precipType === 'snow') { // do something }
总的来说,它是这样的:
向GeoIP发送请求(ip 8.8.8.8在哪里?)
接收来自GeoIP的响应(时间为:1.2345 lon:1.432)
向DarkSky发送请求(今天几点:1.2345 lon:1.432?)
收到DarkSky的回应(雪!)
… 做东西 …
怎么样
为了成功完成此练习,您将需要熟悉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来搜索此关键字。但是从前两个开始。
祝好运!