Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
chengkongyiban opened this issue Feb 21, 2023 · 5 comments
Closed

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

chengkongyiban opened this issue Feb 21, 2023 · 5 comments

Comments

@chengkongyiban
Copy link

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

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

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

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

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

@zZPiglet
Copy link
Owner

e8f3b89

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

@chengkongyiban
Copy link
Author

e8f3b89

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

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

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

@chengkongyiban
Copy link
Author

e8f3b89

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

佬,帮忙改一下吧,😫,

@zZPiglet
Copy link
Owner

很抱歉,没有 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
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants