Closed chengkongyiban closed 1 year ago
https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f
已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!
https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f
已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!
以下是刚刚测试的日志,我注意到$environment.system依然在😂
Can't find variable: $environment in method global code@ line: 16, column: 49
https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f
已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!
佬,帮忙改一下吧,😫,
很抱歉,没有 Shadowrocket,无法进行进一步测试。如果真的有此报错,大概率是 Shadowrocket 自身问题。node 和浏览器的 JavaScript 控制台也没有 $environment 接口,这次的写法和之前的写法均不会引起报错。&&
在 JavaScript 中从左至右有短路运算,第一个表达式返回 false 之后理应直接返回 false(参考: MDN)。之前写法中 Shadowrocket 的通知接口第四个参数有误,已进行修改。
你说的问题可以直接通过:
const isQuanX = typeof $notify != "undefined";
const isSurgeiOS1 =
typeof $utils != "undefined" &&
$environment["surge-version"] &&
$environment.system == "iOS";
const isSurgeiOS2 =
"undefined" !== typeof $environment &&
$environment["surge-version"] &&
$environment.system == "iOS";
const isLooniOS = typeof $loon != "undefined" && /iPhone/.test($loon);
const isStashiOS =
"undefined" !== typeof $environment &&
$environment["stash-version"] &&
$environment.system == "iOS";
const isShadowrocket = "undefined" !== typeof $rocket;
const isLanceX = "undefined" != typeof $native;
const platform = {isQuanX, isSurgeiOS1, isSurgeiOS2, isLooniOS, isStashiOS, isShadowrocket, isLanceX}
console.log(JSON.stringify(platform))
$done()
进行测试,其中 isSurgeiOS1
是老的写法,isSurgeiOS2
是新的写法,这段代码在 Surge 和 Quantumult X 中均未报错,删除 $done()
后在 node 和 MDN 中运行也未报错。
很抱歉,没有 Shadowrocket,无法进行进一步测试。如果真的有此报错,大概率是 Shadowrocket 自身问题。node 和浏览器的 JavaScript 控制台也没有 $environment 接口,这次的写法和之前的写法均不会引起报错。
&&
在 JavaScript 中从左至右有短路运算,第一个表达式返回 false 之后理应直接返回 false(参考: MDN)。之前写法中 Shadowrocket 的通知接口第四个参数有误,已进行修改。你说的问题可以直接通过:
const isQuanX = typeof $notify != "undefined"; const isSurgeiOS1 = typeof $utils != "undefined" && $environment["surge-version"] && $environment.system == "iOS"; const isSurgeiOS2 = "undefined" !== typeof $environment && $environment["surge-version"] && $environment.system == "iOS"; const isLooniOS = typeof $loon != "undefined" && /iPhone/.test($loon); const isStashiOS = "undefined" !== typeof $environment && $environment["stash-version"] && $environment.system == "iOS"; const isShadowrocket = "undefined" !== typeof $rocket; const isLanceX = "undefined" != typeof $native; const platform = {isQuanX, isSurgeiOS1, isSurgeiOS2, isLooniOS, isStashiOS, isShadowrocket, isLanceX} console.log(JSON.stringify(platform)) $done()
进行测试,其中
isSurgeiOS1
是老的写法,isSurgeiOS2
是新的写法,这段代码在 Surge 和 Quantumult X 中均未报错,删除$done()
后在 node 和 MDN 中运行也未报错。
刚刚测试了最新的Unblock脚本 小火箭已经可以使用了。谢谢大佬解答
1、第17行 因为小火箭没有$environment接口,$environment.system 会导致小火箭报错, 可否换一种方式识别Surge iOS端
2、小火箭通知格式与Surge不同
小火箭是$notification.post(title, subtitle, body, url)
Surge是$notification.post(title, subtitle, body, {url:url})
以上,麻烦大佬为兼容小火箭费心。