WebWorker 的执行范围与传统 JavaScript 的“窗口”上下文完全分离。脚本是否有标准方法来确定它本身是否作为 WebWorker 执行?
我能想到的第一个“黑客”是检测工人范围内是否存在“窗口”属性。如果不存在,这可能意味着我们正在作为 WebWorker 执行。
其他选项是检测标准“窗口”上下文中不存在的属性。对于 Chrome 14,此列表当前包括:
FileReaderSync
FileException
WorkerLocation
importScripts
openDatabaseSync
webkitRequestFileSystemSync
webkitResolveLocalFileSystemSyncURL
检测 WorkerLocation 似乎是一个可行的候选者,但这仍然感觉有点骇人听闻。有没有更好的办法?
编辑:这是我用来确定正在执行的 WebWorker 中存在的属性的 JSFiddle,这些属性现在位于“窗口”中。