2015-06-05 15 views
11

Narzędzia deweloperskie Chrome doskonale nadają się do debugowania pracowników sieci WWW, ponieważ mogę "przeglądać" to środowisko JavaScript i ustawiać punkty przerwania. Nawet konsola działa zgodnie z oczekiwaniami.Debugowanie pracowników sieci Web w przeglądarce Safari Web Inspector

W Safari, to zupełnie inna historia. console.log z web worker nawet nie drukuje w konsoli. Widzę załadowany skrypt roboczy i umieszczam na nim punkt przerwania, ale się nie psuje. Nie widzę nawet skryptów załadowanych importScripts.

Jak mogę użyć przeglądarki internetowej Safari do rozwiązywania problemów?

Nie dlatego, że myślę, że to ważne, ale używam Safari 8.

+1

Czy istnieje powód, dla którego trzeba użyć Safari? Czy badasz problem specyficzny dla przeglądarki Safari? – Halcyon

+1

Produkt mojej firmy obsługuje Safari (i wszystkie najważniejsze przeglądarki) i chcemy umożliwić klientom i inżynierom wsparcie w rozwiązywaniu problemów bez względu na przeglądarkę internetową. –

+2

Chrome, FireFox, Opera, IE, Edge; Wszystkie pokazują wiadomości od pracowników internetowych w konsoli. Safari? "Ha, my wiemy lepiej, nie potrzebujesz tego". – muttonUp

Odpowiedz

-1

Zamiast console.log, można użyć postMessage. postMessage powinien umożliwiać wysyłanie komunikatów debugowania do konsoli Safari.

Here jest doskonałym przykładem tego, jak to zrobić, ja wklejony główną ideę poniżej:

// 
// In the Main thread 
// 
var worker = new Worker('/path/of/webworker/code.js') 
worker.onmessage = function (e) { 
    var result = JSON.parse(e.data); 
    if(result.type == 'debug') { 
    console.log(result.msg); 
    } else if(result.type == 'response') { 
    // ... use result.answer ... 
    } 
} 


// 
// In the WebWorker 
// 
function debug(msg) {               
    postMessage(JSON.stringify({type:'debug',msg:msg}));       
} 

onmessage = function (e) { 
    var inputData = e.data; 
    // work on input data 
    debug('Working OK'); 
    // work some more 
    // ... 
    postMessage(JSON.stringify({type:'response', answer:42})); 
}; 

Jeśli nie chce się bawić z postMessage choć David Flanagan wykonany otoki dla niego here które powinny umożliwić Ci przynajmniej nie debugowania z console.log

+1

Wiem o "postMessage", ale naprawdę chcę ustawić punkty przerwania i mieć w pełni debugowanie. –

1

wstawić kod debugger; w źródle

Zastosowanie: Włóż go gdziekolwiek chcesz dodać punkt przerwania i kiedy deweloper cO nsole jest otwarty automatycznie wstrzyma wykonanie na tej linii

var a = 50; 
a = a + 5; 
debugger; //--> execution is paused here 
a = a - 5; 

Aby uzyskać więcej informacji zobacz Debugger Documentation on mozilla.org

+1

Podaj opisową nazwę lub tytuł linków w przyszłości. –

+0

@ Daniel A. White, Hi czy to działa dla ciebie? Jeśli tak, czy możesz upublicznić ten post? –

+0

Nic nie robi w Safari (<= 9,1) – user3761308

Powiązane problemy