在做前端浏览器信息追踪,把所有获取信息的方法和 method 都放在了一个 object 里
但是有些浏览器默认阻止了一些行为导致执行中断,
有没有什么办法能够在异常处理里面执行完一个 object 的所有 method 。。。
举例:
traceinfo=new Object();
traceinfo.timezone=new Date().getTimezoneOffset();
traceinfo.hardwareConcurrency=navigator.hardwareConcurrency;
//cpu logical 核心数
traceinfo.timezone_extend=Intl.DateTimeFormat().resolvedOptions().timeZone;
//有些浏览器不支持
traceinfo.is_private_window=is_private_window();
traceinfo.os_info=getos_info();
traceinfo.os_info_extend=navigator.oscpu;
traceinfo 这个 object 里面既有 method 也有直接的浏览器变量赋值,如果直接像上面这样运行,假设比如火狐浏览器阻止了 navigator.hardwareConcurrency 数据的获取,抛出了 navigator 未定义异常,会导致后面的 timezone_extend ,is_private_window ,os_info ,os_info_extend 都为空
期待是能够(伪 python):
for methodname in traceinfo:
try:
traceinfo.dataname=traceinfo.methodname()
except:
traceinfo.dataname=null
得到的结果会都在 traceinfo 对象里面,个别获取不到的就为空就好
method 实在比较多,一个个用 try catch 包裹感觉不优雅...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.