2012-08-08 10 views
9

Wiem, że pracownicy WWW nie mogą uzyskać dostępu bezpośrednio do domeny. Ale byłoby złym pomysłem zrobienie czegoś takiego:Przekazywanie obiektu dokumentu do pracownika WWW

var doc = $(document); 

var worker = new Worker("worker.js"); 

worker.postMessage({ cmd: 'doDomStuff', data: doc }); 

Czy widzisz jakieś wady z tym kodem?

Wszelkie wskazówki/komentarze są mile widziane.

zmiana: Wystarczy być jasne: chcę tylko Getdata z DOM, nie ustanawia żadnych nowych wartości lub manipulować DOM w jakikolwiek sposób.

+1

W innych językach, jedyny wątek manipulować UI jest wątek, który go stworzył (myślę konkretnie .NET, Java i inne, ale może to zrobić też). O ile przeglądarki nie obsługują różnych rzeczy, prawdopodobnie dlatego pracownicy WWW nie mają naturalnie dostępu do DOM. –

+1

@CoreyOgburn Proszę zobaczyć moją aktualizację – Johan

+2

Brzmi jak coś łatwego do przetestowania. –

Odpowiedz

6

Nie widzę żadnego powodu, dlaczego nie może to zrobić, ale może to prowadzić do problemów, gdy próbują manipulować ten sam element w pracownika i w kodzie głównym js jednocześnie .

Musisz dodać trochę blokady Mutex do kodu.

Niestety zarysować wyżej ...


Pracownicy zrobić NIE mieć dostęp do:

DOM (to nie jest bezpieczny wątku)
Przedmiotem okno
Obiekt dokumentu
Obiekt nadrzędny

Source

+3

Wiem, że pracownik nie ma bezpośredniego dostępu do DOM, dlatego próbuję przekazać go jako obiekt. Zapomniałem wspomnieć, że nie zamierzałem manipulować nim w robotniku. Chcę tylko uzyskać wartości, a nie ustawić niczego. – Johan

+0

@Johan to nie może ** nic ** do domu. cokolwiek z domeny, którą miniesz, będzie w zasadzie klonem obiektu i nie będziesz w stanie nic z nim zrobić ... – Neal

+0

Oh ok, dzięki za informacje – Johan

Powiązane problemy