Есть даже больше: WorkerNavigator
и т. Д.
Если только нет ключевого слова для обнаружения веб-работников, вы должны использовать переменную.(Ничто не может помешать мошенническому сценарию, выполняемому до того, как ваш сценарий установит или заменит переменные.)
Итак, если у вас нет никаких жульнических сценариев, запущенных до вашего сценария, любая из этих строк будет работать:
this.DedicatedWorkerGlobalScope?this.__proto__ === this.DedicatedWorkerGlobalScope.prototype:false
this.WorkerGlobalScope?this.__proto__.__proto__ === this.WorkerGlobalScope.prototype:false // works for shared workers too
this.constructor === this.DedicatedWorkerGlobalScope //or SharedWorkerGlobalScope
!(this.DedicatedWorkerGlobalScope === undefined)
!(this.DedicatedWorkerGlobalScope === undefined)
Вы также можете использовать self
§ вместо this
, но поскольку this
не может быть установлено, его точнее.
Я предпочитаю:
this.DedicatedWorkerGlobalScope !== undefined
Конечно, если у вас есть только рабочий контекст и контекст окна, вы можете выполнить обратные тесты для контекста окна.Например, this.Window === undefined
.