使用 JSBox 制作一个 IP 地址获取脚本

前阵子我在少数派看到了钟大写的 JSBox 介绍文章,才了解到钟大新写了一个 JSBox APP。
这让我想起了半年前 Pin 支持 JS 脚本时,我为了图新鲜写了一个 IP 地址获取脚本的事。
可惜当时 Pin 才刚刚支持 JS 脚本,有一些 UI 方面的 BUG,对我写的脚本并不是很友好。今天我从 Pin 交流群的群文件中下载了我以前写的脚本,发现勤劳的钟大将这些 BUG 都修复了。

JSBox 简介

我很懒,直接引用一下钟大对 JSBox 的介绍吧。
文章来源:少数派 - JSBox: 一个创造工具的工具
JSBox 是一个可以用来运行 JavaScript 脚本的 iOS 应用,你可以通过他来执行标准的 JavaScript 脚本。

这种执行不是指跑在浏览器上,而是执行在一个完全原生的环境,效率很高。

并且我们提供了很多 iOS 原生的接口,这意味着你可以通过他做很多事情,包括但不限于:

  • 写一个用来查询汇率的脚本;
  • 写一个用于计算小费的脚本;
  • 通过接口实现一个小小的应用,提供丰富的界面;
  • 写一个文本收藏工具,用于收藏常用的文字;
  • 写一个下载 Twitter 视频的小工具;
    ……

其实 JSBox 是完完全全可编程的一个应用,他能做很多事情,所限制产出的往往只是动手能力。

为了更好的编写脚本,我们甚至提供了配套的 VSCode 插件,用于更高效率的编写和测试 JSBox 脚本,可以做的桌面端编写 iOS 端实时刷新。因为我们始终相信无论移动端的编辑器做的多么强大,编写代码的效率也始终被桌面端碾压。

所以,JSBox 并不是像 Pythonista 那样为了编写代码而生的应用,编写代码只是实现功能的手段,我们的一切最终都是为了效率的提高。

使用 JSBox 制作一个 IP 地址获取脚本

新建 JS 脚本,添加以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getip() {
var url = "ipip.net"
$ui.toast("正在获取 IP 地址:" + url)
$ui.loading(true)
$http.get({
url: "http://myip.ipip.net/",
header: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"
},
handler: function(resp) {
$ui.loading(false)
var data = resp.data
$ui.alert({
title: "IP 信息如下",
message: resp.data
})
}
})
}
getip()

然后直接运行就可以了
脚本下载地址:IP 地址获取. js

运行效果

代码解读

我不知道该不该写代码解读,看的懂代码的不需要,看不懂的。。尽量看注释部分理解吧

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// 定义 getip()函数 
function getip() {
// 定义 url 为 ipip.net
var url = "ipip.net"
// 调用 ui.toast 函数,显示获取状态。具体看作者开发文档
// 后面使用到的函数和介绍我在代码后面已经列出来了
$ui.toast("正在获取 IP 地址:" + url)
// 调用 ui.loading 函数,显示加载中。
$ui.loading(true)
//http 的 get 嘛,不多介绍了
$http.get({
// 调用 ipip.net 的 api
url: "http://myip.ipip.net/",
// 浏览器的 UA 模拟,这个很重要,不然没法获取返回参数的
header: {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" // 模拟浏览器的 UA,这个很重要
},
// 调出弹出串口函数
handler: function(resp) {
$ui.loading(false)
var data = resp.data
$ui.alert({
title: "IP 信息如下",
message: resp.data
})
}
})
}
// 使用 getip() 函数,运行
getip()

调用的相关函数如下:

JSBox 开发文档

后记

我文笔并不是很好,如果用 WordPress 博客程序写我估计会逻辑混乱,排版糟糕。
哪位巨巨指点一下让我写的更好,感激不尽啊。

坚持原创技术分享,您的支持将鼓励我继续创作!