WebWorker wykonuje z zakresem całkowicie oddzielonym od kontekstu "okna" tradycyjnego JavaScript. Czy istnieje standardowy sposób, w jaki skrypt określa, czy jest on wykonywany jako WebWorker?Dowolny standardowy mechanizm do wykrywania, czy JavaScript działa jako WebWorker?
Pierwszym "hack", o jakim myślę, byłoby wykrycie, czy w zakresie pracownika istnieje "okno". Jeśli jest nieobecny, może to oznaczać, że wykonujemy pracę jako WebWorker.
Dodatkowymi opcjami byłyby wykrywanie właściwości nieobecnych w standardowym kontekście "okna". Chrome 14, lista ta obejmuje obecnie:
FileReaderSync
FileException
WorkerLocation
importScripts
openDatabaseSync
webkitRequestFileSystemSync
webkitResolveLocalFileSystemSyncURL
Wykrywanie WorkerLocation wydaje się realne kandydata, ale to nadal czuje się nieco hackish. Czy istnieje lepszy sposób?
EDYTOWANIE: Here jest JSFiddle użyłem do określenia właściwości obecnych w uruchomieniu WebWorker, które są teraz w "oknie".
Dlaczego nie możesz po prostu sprawdzić "okna"? –
Co powiesz na '! (Okno type ==" object "&& typeof document ==" object "&& window.document === document)'? –