zZPiglet / Task

Some Scripts.
GNU General Public License v3.0
532 stars 97 forks source link

UnblockURLinWeChat.js脚本在小火箭上遇到的问题 #48

Closed chengkongyiban closed 1 year ago

chengkongyiban commented 1 year ago

1、第17行 因为小火箭没有$environment接口,$environment.system 会导致小火箭报错, 可否换一种方式识别Surge iOS端

2、小火箭通知格式与Surge不同

小火箭是$notification.post(title, subtitle, body, url)

Surge是$notification.post(title, subtitle, body, {url:url})

以上,麻烦大佬为兼容小火箭费心。

zZPiglet commented 1 year ago

https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f

已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!

chengkongyiban commented 1 year ago

https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f

已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!

以下是刚刚测试的日志,我注意到$environment.system依然在😂

Can't find variable: $environment in method global code@ line: 16, column: 49

chengkongyiban commented 1 year ago

https://github.com/zZPiglet/Task/commit/e8f3b898ea28735682331e0c9c455e0e95fcce9f

已修改,我没有 Shadowrocket 及 Stash,烦请测试,谢谢!

佬,帮忙改一下吧,😫,

zZPiglet commented 1 year ago

很抱歉,没有 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 中运行也未报错。

chengkongyiban commented 1 year ago

很抱歉,没有 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脚本 小火箭已经可以使用了。谢谢大佬解答